linux - 使用 Rsync 包含和排除选项按模式包含目录和文件

标签 linux unix rsync darwin

我在正确获取我的 rsync 语法时遇到问题,我想知道我的场景是否真的可以使用 rsync 来处理。首先,我确认 rsync 在我的本地主机和远程主机之间运行良好。对目录进行直接同步是成功的。

这是我的文件系统的样子:

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

我想要做的是仅对子目录中以“file_11_”开头的文件运行 rsync,并且我希望能够只运行一个 rsync 作业来同步子目录中的所有这些文件。

这是我正在尝试的命令:

rsync -nrv --include="**/file_11*.jpg"--exclude="*"/Storage/uploads//website/uploads/

这会导致 0 文件在我的试运行中被标记为传输。我尝试了 --include--exclude 语句的各种其他组合,但要么继续没有结果,要么得到所有内容,就好像没有设置包含或排除选项一样.

有人知道怎么做吗?

最佳答案

问题是 --exclude="*" 说要排除(例如) 1260000000/ 目录,所以 rsync 永远不会检查该目录的内容,因此永远不会注意到该目录包含您的 --include 匹配的文件。

我认为最接近您想要的是:

rsync -nrv --include="*/" --include="file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/

(这将包括所有目录,以及与 file_11*.jpg 匹配的所有文件,但不包括其他文件),或者 可能这个:

rsync -nrv --include="/[0-9][0-9][0-9]0000000/" --include="file_11*.jpg" --exclude="*" /Storage/uploads/ /website/uploads/

(相同的概念,但对包含的目录更加挑剔)。

关于linux - 使用 Rsync 包含和排除选项按模式包含目录和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952000/

相关文章:

python-3.x - Python 子进程,将 rsync 与 ssh key 文件一起使用,方法调用出错

ssh - 如何挂载远程 ecryptfs 目录?

php - 检查用户是否是root

c - watch 描述符到底是什么? (Linux inotify 子系统)

linux - 如何打印/记录 rsync 计算的校验和?

linux - 如何在 shell 脚本中逐行从文件中分离关键字?

mysql - 如何获取 Mysql INSERT 以向 pthread 互斥体发出信号

linux - 如何找到所有可运行的进程

c++ - ‘.’ token 之前应有非限定 ID

linux - 如何使用shell将字符串分割成正确的格式?