SSH+rsync实现服务器的自动备份
免密登录
ssh-keygen
ssh-copy-id root@hostname
使用 rsync 实现自动备份
#!/bin/bash
localDir=/root/halo/
remoteDir=/root/halo_backup
remoteIP=10.0.8.12
id=root
rsync -av -e 'ssh -p 5257' ${localDir} ${id}@${remoteIP}:${remoteDir} > /dev/null 2>&1
将任务加入 crontab
crontab -e
# 添加如下一条记录,每天 00:30 执行备份命令
30 0 * * * /root/rsync_ssh_backup_halo.sh
rsync 命令详解
从本地同步到远程
rsync -avz -e ssh /local/dir/ root@xx.xx.xx.xx:/remote/dir
rsync -avz -e 'ssh -p 2222' /local/dir/
root@xx.xx.xx.xx:/remote/dir
两种方式的区别就是远程的ssh默认端口换了
从远程同步到本地
rsync -avzP -e ssh root@xx.xx.xx.xx:/remote/dir/ /local/dir
rsync -avzP -e 'ssh -p 2222' root@xx.xx.xx.xx:/remote/dir/ /local/dir
从目的目录中删除不必要的文件(在server端没有的文件)
rsync -avzP --delete -e ssh root@xx.xx.xx.xx:/remote/dir/ /local/dir
rsync -avzP --delete -e 'ssh -p 2222' root@xx.xx.xx.xx:/remote/dir/ /local/dir
注意:源路径的最后是否有斜杠有不同的含义:
有斜杠,只是复制目录中的文件;没有斜杠的话,不但要复制目录中的文件,还要复制目录本身!
目的路径的最后有没有斜杠,对传输没有影响!