一、基本同步命令
将远程服务器192.168.1.11上/home/oschina/maven目录下的所有文件,以增量的方式,同步到本地服务器/mnt/raid/maven目录下。
nohup rsync -avz root@192.168.1.11:/home/oschina/maven/ /mnt/raid/maven
二、问题描述
由于一般用rsync同步的文件都是非常多的,可能要好多天才能同步完。我们就会希望将rsync任务做成守护进程daemon。
nohup rsync -avz root@192.168.1.11:/home/oschina/maven/ /mnt/raid/maven
执行后,输入密码。 按下CTRL+z,将当前任务放入后台运行,并暂停。 执行jobs命令 查看当前任务列表,会发现刚才的任务是Stop状态。 执行bg 1命令(1就是rsync任务在jobs列表中的id,不是pid),启动后台任务。 执行fg 1命令,将后台任务放入前台执行。 但是这里的问题是,当exit登出当前shell后,这些任务就停止了,也就是说这些任务是依赖当前shell的。
三、新的问题
当然我们马上会想到
nohup rsync -avz root@192.168.1.11:/home/oschina/maven/ /mnt/raid/maven
但是新的问题来了,无法输入认证密码啊。 rsync daemon运行模式,有一个参数--password-file,但是我没有耐心去配置这个了,而且不通用。
四、解决问题
现在问题就是如何输入密码。那能不能无密码登录执行呢?能!
1.本地服务器生成公钥和私钥
ssh-keygen
2.将本地生成的公钥复制到远程服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.11
如果没有ssh-copy-id命令,直接cat ~/.ssh/id_rsa.pub将内容复制到远程主机的~/.ssh/authorized_keys文件中保存即可。
3.直接登录,或者rsync,或者其他操作,都不需要输入密码了。完美。