![如何使用 rsync 将 N 个图像从服务器复制到本地机器?](https://linux22.com/image/742234/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20rsync%20%E5%B0%86%20N%20%E4%B8%AA%E5%9B%BE%E5%83%8F%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%8D%E5%88%B6%E5%88%B0%E6%9C%AC%E5%9C%B0%E6%9C%BA%E5%99%A8%EF%BC%9F.png)
我想将 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/