返回

巧用Rsync模式:精准同步,文件管理不再难

Linux

Rsync模式技巧:使用include和exclude选项实现精确同步

问题解析

当你尝试使用Rsync同步文件时,你可能遇到了这样的问题:你想仅同步具有特定名称模式的文件,但你的命令不起作用。

解决方案:模式魔法

为了解决这个问题,你可以利用Rsync的--include--exclude选项,并巧妙地使用斜杠(/)表示层级结构。

命令格式如下:

rsync -nrv --include="*/file_11*.jpg" --exclude="*/file_*" /source_directory/ /destination_directory/

其中:

  • -nrv:执行模拟同步,仅显示将同步的文件,但不实际执行同步。
  • --include="*/file_11*.jpg":包含所有子目录中以“file_11_”开头的文件。
  • --exclude="*/file_*":排除子目录中所有其他文件,确保仅同步目标文件。

模式详解

  • */file_11*.jpg:匹配所有子目录中以“file_11_”开头的文件。
  • */file_*:匹配所有子目录中以“file_”开头的文件,但排除file_11_

示例:把棘手变得简单

假设你有以下文件系统结构:

uploads/
  1260000000/
    file_11_00.jpg
    file_11_01.jpg
    file_12_00.jpg
  1270000000/
    file_11_00.jpg
    file_11_01.jpg
    file_12_00.jpg
  1280000000/
    file_11_00.jpg
    file_11_01.jpg
    file_12_00.jpg

使用上述命令,仅包含以下文件:

1260000000/file_11_00.jpg
1260000000/file_11_01.jpg
1270000000/file_11_00.jpg
1270000000/file_11_01.jpg
1280000000/file_11_00.jpg
1280000000/file_11_01.jpg

总结

通过正确使用--include--exclude选项及其模式,你可以有效地筛选文件,确保仅同步所需的文件。

常见问题解答

Q1:为什么我的排除模式不起作用?
A1: 确保排除模式以斜杠(/)开头,并匹配要排除文件的完整路径。

Q2:如何排除整个目录?
A2: 使用斜杠(/)和星号(*)组合,例如--exclude="*/folder_name"

Q3:我可以使用多个模式吗?
A3: 是的,你可以将多个--include--exclude选项连接起来,以创建更复杂的模式匹配。

Q4:为什么模拟模式(-nrv)很重要?
A4: 它允许你预览将同步的文件,在进行实际同步之前找出任何问题。

Q5:在使用模式时,有什么需要注意的?
A5: 小心处理斜杠(/),并在模式中使用正确的通配符(*和?)。