我在正确使用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作业(job)来同步子目录中的所有文件.

下面是我正在try 的命令:

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

这导致在我的试运行中有0个文件被标记为要传输.我try 了--include--exclude语句的各种其他组合,但要么继续没有结果,要么就好像没有设置include或exclude选项一样.

有人知道怎么做吗?

推荐答案

问题是,--exclude="*"表示排除(例如)1260000000/目录,因此rsync从不判断该目录的内容,因此从未注意到该目录包含与--include匹配的文件.

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

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

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

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

(相同的概念,但对它将包含的目录更挑剔).

Linux相关问答推荐

抛出主,即未捕获到SIGSEGV中的异常结果

如何在带模式的文件频繁更改的管道中使用grep-f带模式的文件?

使用sed命令将记录中的字符串替换为DD-MMM-YYYY日期格式

使用 AWK 过滤 Linux 输出

Ubuntu 20 不支持 MAP_FIXED_NOREPLACE

如何从linux调度程序中屏蔽一个cpu(防止它调度线程到那个cpu上)?

如何指定链接时使用的库版本?

全屏(Fullscreen)小部件

具体来说,fork() 如何处理 Linux 中 malloc() 动态分配的内存?

如何比较两个压缩包的内容

无法创建Java虚拟机

通过 Linux FrameBuffer 将像素绘制到屏幕上

未定义的引用 'shm_open',已在此处添加 -lrt 标志

如何克隆 OpenLDAP 数据库

与交换空间相关的链接器性能?

将 bash 脚本添加到路径

如何仅打印 hexdump 中的十六进制值,而不打印行号或 ASCII 表?

错误:ld.so:无法预加载对象 LD_PRELOAD:忽略

crt1.o:在函数_start中:-Linux 中未定义对main的引用

如何在 Linux 中查看日志(log)文件并在查看时应用自定义过滤器?