我在我的src目录中有以下文件结构:
en/ en/a/ en/a/file1 -> ../../en/mp3/file1-longer-name-a en/a/file2 -> ../../en/mp3/file2-longer-name-a en/mp3/file1-longer-name-a en/mp3/file1-longer-name-b en/mp3/file2-longer-name-a en/mp3/file3-longer-name-a
我有兴趣将en / a /下的所有文件复制到目的地,保留符号链接,并且还包括指示文件(这些文件都在en /中),但不包括en / mp3 /下的其他文件我转移的任何符号链接。
我正在使用下面的命令,做了这个工作的显而易见的部分:
rsync -avRz "${SRC}./en/a" "${DST}"
这传输下列文件:
en/ en/a/ en/a/file1 -> ../../en/mp3/file1-longer-name-a en/a/file2 -> ../../en/mp3/file2-longer-name-a
我希望你能帮我调整rsync参数,以便下面的文件也被传输:
en/mp3/file1-longer-name-a en/mp3/file2-longer-name-a
有没有一种方法来实现这一点,而不需要写一个algorythm循环在en / a /下的软链接,并将它们指向的文件一一传输呢?
你可以使用find和rsync的--files-from参数结合使用:
find "${SRC}./en/a" -type l -exec readlink {} ';'|sort|uniq|rsync -avRz --files-from=- "${SRC}" "${DST}"
find列表中的所有符号链接在文件夹中,并执行每个它们的readlink。 sort和uniq ) -文件- --files-from参数设置为-读取它应该从标准input文件同步的文件