如何使用 rsync 将 N 个图像从服务器复制到本地机器?

如何使用 rsync 将 N 个图像从服务器复制到本地机器?

我想将 n 个图像从我的服务器复制到本地机器,我已尝试以下命令:

rsync -P <Source>(.om[1,100]) <localmachine>

但使用这个不起作用

答案1

您可以将文件放在一个目录中,然后上传整个目录。如果您不想这样做,请尝试以下命令:

rsync -P user@server:'/path/imagefilename.om{1..100}' destination-dir/

答案2

rsync 无法列出并限制远程服务器上的文件。因此,您必须事先构建文件列表。例如,您可以使用find和 来执行此操作head

find /path/to/dir -type f |head -n 100'

将返回找到的前 100 个文件。

rsync具有参数--files-from,它允许您从文件中读取要复制的文件列表。它甚至可以读取该列表来自远程服务器。因此,您可以将该文件列表写入文件,并将其提供给 rsync。

但实际上你可以用一个命令完成所有这些操作:

ssh source 'find /path/to/dir -type f |head -n 100' | rsync --files-from - source:/ /path/to/local/dir

这将使用 ssh 连接到服务器source并返回搜索结果中的前 100 个文件。然后将此结果传输到 rsync。使用-作为参数的值--files-from告诉 rsync 从 stdin 而不是实际文件读取该“文件”。然后您像往常一样提供源和目标。

答案3

我只想传输 100 个文件

要传输 100 个非序列集的文件,您可以使用以下命令:

rsync -P `ls source-dir/ -U | head -100` destination-dir/

我找不到 rsync 的选项,它只传输 100 就停止了

相反,你需要找到一种方法来选择 100 个文件作为列表传递给 rsync

如果源文件夹是远程文件夹,则可能必须挂载它(可能是自动 fs)

rsync -P `ls /mnt/source-dir/ -U | head -100` destination-dir/

相关内容