编写一个shell脚本使用sftp服务定期将本机服务器的文件同步到另一台机器
时间: 2024-03-01 17:55:38 浏览: 126
好的,这是一个简单的脚本示例,你可以根据需要进行修改:
```bash
#!/bin/bash
# 定义本地和远程的目录
local_dir="/path/to/local/dir"
remote_dir="/path/to/remote/dir"
# 定义远程主机的IP地址、端口号、用户名和密码
remote_host="remote_host_ip"
remote_port="remote_host_port"
remote_user="remote_host_user"
remote_pass="remote_host_password"
# 定义日志文件路径
log_file="/path/to/log/file"
# 定义同步间隔时间(秒)
sync_interval=3600 # 1小时
# 进入本地目录
cd $local_dir
while true
do
# 使用sftp同步文件
sftp -oPort=$remote_port $remote_user@$remote_host <<EOF >> $log_file
cd $remote_dir
put -r .
exit
EOF
# 记录同步时间和状态到日志文件
echo "Sync at $(date)" >> $log_file
if [ $? -eq 0 ]; then
echo "Success" >> $log_file
else
echo "Fail" >> $log_file
fi
# 等待一段时间后再次同步
sleep $sync_interval
done
```
在上面的脚本中,我们首先定义了本地和远程的目录,以及远程主机的IP地址、端口号、用户名和密码。然后进入本地目录,使用sftp命令同步文件到远程主机,并将同步时间和状态记录到日志文件中。最后等待一段时间后再次同步。
你可以将上面的脚本保存为一个.sh文件,然后使用crontab命令添加一个定时任务来定期执行该脚本。例如,你可以在每天的凌晨3点执行一次,可以使用以下命令添加一个crontab任务:
```bash
0 3 * * * /bin/bash /path/to/sync_script.sh
```
这样,每天凌晨3点就会执行一次同步脚本。
阅读全文