sync与rsync
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