首页
随机
登录
设置
关于MediaWiki
免责声明
MediaWiki
搜索
编辑“︁
Linux定时备份
”︁
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
<syntaxhighlight lang="bash" line="1"> #!/bin/bash # 参数设定 # WebDAV 服务器的 URL 和认证信息 webdav_url="https://file.raf.cc/dav/onedrive/backup/raf.cc" webdav_user="admin" webdav_pass="ksqqlsx1073" # 备份存放的目录 basedir=/data/backup # 要保留的最大天数 max_days=30 # 需要备份的目录或文件 使用空格分开 bakfiles="/data/docker/" # 获取当前日期的时间戳 current_time=$(date +%s) # 指定备份文件的名称,精确到秒 backup_file="backup_$(date +%Y%m%d)_$current_time.tgz" echo ===================================================== date '+%D %T' cd $basedir # 删除备份目录中 $days 天以前备份文件,不包含子目录 find -maxdepth 1 -name "*.tgz" -mtime +"$max_days" -exec rm -f {} \; # 创建一个新的备份文件,并将所有需要备份的目录和文件都添加到其中 tar -czpf "$basedir/$backup_file" $bakfiles # 大文件打包前后,缓解磁盘压力,降低I/O错误概率 sleep 2s ;sync;sync echo "Backup completed: $backup_file" # 列出 WebDAV 目录中的所有文件 file_list=$(curl -s -u "$webdav_user:$webdav_pass" -X PROPFIND "$webdav_url" | grep -oP '<D:displayname>\K[^<]+' | sed '1d') # 循环遍历文件列表 for file in $file_list; do echo "checking file:$file" # 获取文件的修改日期 modified_timestamp=$(echo $file|awk -F'[_.]' '{print $3}') echo "modified_timestamp=$modified_timestamp" # 计算文件存在的天数 days_diff=$(( (current_time - modified_timestamp) / 86400 )) echo "days_diff=$days_diff" # 如果文件存在的天数超过最大天数,就删除文件 if [ "$days_diff" -gt "$max_days" ]; then echo "Deleting $file (modified on $modified_time)" curl -u "$webdav_user:$webdav_pass" -X DELETE "$webdav_url/$file" fi done echo "$(date '+%D %T'): start upload..." curl -# -u "$webdav_user:$webdav_pass" -T $backup_file "$webdav_url/$backup_file" echo "$(date '+%D %T'): Upload completed: $backup_file" </syntaxhighlight> [[分类:Linux]]
摘要:
请注意,所有对MediaWiki的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Mywiki:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)