shell 每天自动增量备份文件到SFTP 脚本

#!/bin/bash

# 配置信息
SOURCE_DIR="/path/to/source" # 要备份的文件所在目录
BACKUP_DIR="/path/to/backup" # 备份文件存放目录
SFTP_SERVER="sftp.example.com" # SFTP 服务器地址
SFTP_USER="username" # SFTP 登录用户名
SFTP_PASSWORD="password" # SFTP 登录密码

# 获取当前日期和时间
DATE=$(date +"%Y%m%d%H%M%S")

# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE

# 备份文件
rsync -a --link-dest=$BACKUP_DIR/latest $SOURCE_DIR $BACKUP_DIR/$DATE

# 更新 latest 链接
rm -rf $BACKUP_DIR/latest
ln -s $BACKUP_DIR/$DATE $BACKUP_DIR/latest

# 使用 expect 命令执行 SFTP 上传
expect <<EOF
spawn sftp $SFTP_USER@$SFTP_SERVER
expect "password:"
send "$SFTP_PASSWORD\n"
expect "sftp>"
send "put -r $BACKUP_DIR/$DATE/*\n"
expect "sftp>"
send "exit\n"
EOF

# 删除旧备份(可选)# 这里假设只保留最近 5 个备份,可以根据需要更改数字
find $BACKUP_DIR -maxdepth 1 -type d | sort | head -n -5 | xargs rm -rf

 

请注意,上述脚本使用了 rsync 命令进行增量备份,并使用 expect 命令执行 SFTP 上传。你需要确保在系统上安装了这两个工具。

请注意,您需要将脚本设置为每天自动运行。可以使用 crontab 来完成这个任务。打开终端并输入crontab -e,然后添加以下行:每天的午夜(即 00:00)运行脚本。

0 0 * * * /path/to/your/script.sh

正文完
 
admin
版权声明:本站原创文章,由 admin 2023-08-19发表,共计845字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。