sync与rsync

发布时间 2023-06-19 10:57:15作者: 咿呀哒喏

sync会把内存数据落盘

rsync可以做实时同步

常用:

1. -r 递归
rsync -r source1 source2 destination
2. -a全部(包含元数据)
#-a参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a比-r更有用。
rsync -a source destination
#目标目录destination如果不存在,rsync 会自动创建。执行上面的命令后,源目录source被完整地复制到了目标目录destination下面,即形成了destination/source的目录结构。
#如果只想同步源目录source里面的内容到目标目录destination,则需要在源目录后面加上斜杠。
rsync -a source/ destination
#上面命令执行后,source目录里面的内容,就都被复制到了destination目录里面,并不会在destination下面创建一个source子目录。

3. --delete 可回删
#默认情况下,rsync 只确保源目录的所有内容(明确排除的文件除外)都复制到目标目录。它不会使两个目录保持相同,并且不会删除文件。如果要使得目标目录成为源目录的镜像副本,则必须使用--delete参数,这将删除只存在于目标目录、不存在于源目录的文件。
--delete参数会使得destination成为source的一个镜像。
rsync -av --delete source/ destination

4. --exclude 不同步项
#希望同步时排除某些文件或目录,这时可以用--exclude参数指定排除模式。
#以下命令排除了所有 TXT 文件。
rsync -av --exclude '*.txt' source/ destination

#如果要排除某个目录里面的所有文件,但不希望排除目录本身,可以写成下面这样。
rsync -av --exclude 'dir1/*' source/ destination

#多个排除模式可以用多个--exclude参数,也可以利用 Bash 的大扩号的扩展功能,只用一个--exclude参数。
rsync -av --exclude 'file1.txt' --exclude 'dir1/*' source/ destination

rsync -av --exclude={'file1.txt','dir1/*'} source/ destination

5. --include指定必须同步的文件模式,往往与--exclude结合使用。
排除所有非txt的文件
rsync -av --include="*.txt" --exclude='*' source/ destination


6. ssh远程同步
#如果 ssh 命令有附加的参数,则必须使用-e参数指定所要执行的 SSH 命令。
rsync -av  source/ user@remote_host:/destination
rsync -av -e 'ssh -p 873' source/ user@remote_host:/destination

7. rsync协议
#除了使用 SSH,如果另一台服务器安装并运行了 rsync 守护程序,则也可以用rsync://协议(默认端口873)进行传输。具体写法是服务器与目标目录之间使用双冒号分隔::。
#地址中的module并不是实际路径名,而是 rsync 守护程序指定的一个资源名,由管理员分配。如果想知道 rsync 守护程序分配的所有 module 列表,可以执行下面命令
rsync rsync://192.168.122.32
rsync -av source/ rsync://192.168.122.32/module/destination
rsync -av source/ 192.168.122.32::module/destination

参考链接:https://www.ruanyifeng.com/blog/2020/08/rsync.html