场景:
同步大量文件从A到B, 先同步全量,在同步增量
scp同步文件也能同步目录,但是同步目录中的增量就不太好使了
- scp 可以同步目录,但是是完全覆盖目标目录,保持和源一样,重复复制,目标目录中多余的文件会被删掉(rsync效果一样)
- 不期望同步正在写的文件(比如,认为修改时间在1分钟前的文件是可以同步的;当然不能完全避免同步的时候又突然有写入)
脚本:
1 2 3 |
#!/bin/bash ip=xxx.xxx.xxx.xxx ssh $ip 'find /data1/files/ -type f -mtime -1 -mmin +1' |while read f;do echo $f; d=`dirname $f`; [ ! -d $d ] && mkdir -p $d; scp $ip:$f $f; done |
功能: 将目标机器的文件同步到本地对应目录(这里是相同目录)
注意:
- 同步2天内、1分钟前修改过的文件
- find命令的 -mtime 是以24小时为单位计算的,如:
- 24小时前、48小时内: -mtime 1
- 24小时内: -mtime 0
- 48小时内:-mtime -1
- -mmin 和 -mtime不太一样
- 1分钟内: -mmin 1 (而不是 -mmin 0)