rsync同步同一台服务器下的不同文件夹

需求是讲seafile目录下的数据 同步到oss bucket 挂载的路径下。实现同步和备份

安装

yum install -y rsync

1

2

yuminstall-yrsync

添加crontab

这里直接用宝塔的定时任务了,

一台服务器,不同目录之间进行同步

rsync -avzP --delete /home/one/ /home/od

rsync -avzP --delete 新数据目录 旧数据目录

1

2

3

rsync-avzP--delete/home/one//home/od

rsync-avzP--delete新数据目录旧数据目录

将新数据目录下的数据,同步至旧数据目录下,实现两个目录之间相同内容。

(包括在新数据目录下,文件内容的增删改查及目录的增删改查)

注:如果不加–delete,只会同步增加的内容,新目录中删除的内容,并不会同步到旧目录中。

-z:传输时进行压缩提高效率

-v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息

-P:显示文件传输的进度信息

-a --archive:归档模式,表示递归传输并保持文件属性,等同于"-rtopgDl"

-r --recursive:以递归模式拷贝目录

-R --relative:使用相对路径

-l --links:如果文件是软链接,则拷贝软链接本身而非软链接所指向的文件

-L --copy-links:如果文件是软链接,拷贝软链接指向的文件

-W --whole-file:拷贝文件时不进行增量检测

-t --times:保持 mtime 属性

rsync 默认用"quick check"算法决定哪些文件需要增量传输。此算法只比较文件的大小和 mtime,即使其它属性不同也会认为它们是完全相同的文件,从而不需要增量传输

建议任何时候都加上"-t",否则目标文件 mtime 会设置为系统时间,导致下次更新检查出 mtime 不同而导致增量传输无效

1

2

3

4

5

6

7

8

9

10

11

12

13

14

-z:传输时进行压缩提高效率

-v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息

-P:显示文件传输的进度信息

-a--archive:归档模式,表示递归传输并保持文件属性,等同于"-rtopgDl"

-r--recursive:以递归模式拷贝目录

-R--relative:使用相对路径

-l--links:如果文件是软链接,则拷贝软链接本身而非软链接所指向的文件

-L--copy-links:如果文件是软链接,拷贝软链接指向的文件

-W--whole-file:拷贝文件时不进行增量检测

-t--times:保持mtime属性

rsync默认用"quick check"算法决定哪些文件需要增量传输。此算法只比较文件的大小和mtime,即使其它属性不同也会认为它们是完全相同的文件,从而不需要增量传输

建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同而导致增量传输无效

忽略某个目录(忽略旧数据中某个目录或文件不进行同步)

使用Rsync同步的时候往往会要求对某个文件夹或者文件进行忽略,客户端可以使用–exclude参数来实现对目录或者文件的忽略

注:必须是忽略在前,删除在后,否则没有意义!!!

rsync -avzP --exclude "cc" --delete /home/one /home/od

1

2

rsync-avzP--exclude"cc"--delete/home/one/home/od

直接使用显示进度条的命令

rsync -av --progress /源目标文件夹 /目标文件夹(需要复制到的地方)

1

2

rsync-av--progress/源目标文件夹/目标文件夹(需要复制到的地方)