我的一个目录中有 110 个大文件。但我无法立即复制它们,因为系统在 50 分钟后超时。我想复制文件 1 到 10、下一个 11 到 20、下一个 21 到 30,依此类推。顺序并不重要。每次编写cp
一行命令时,我想复制 10 个文件。我怎样才能写入cp
复制文件号11到20(这不是头或尾)?
PS我的笔记本电脑是MacBook
文件名中包含空格。
答案1
rsync -ai /path/to/source/directory/ /path/to/destination/directory
这用于rsync
将所有文件从源目录复制到目标目录。如果复制中断,您只需再次发出相同的命令即可重新启动复制。
选项-a
( --archive
) 保留文件的元数据(所有者、权限、时间戳等)。这在后续运行中用于确定哪些文件需要传输,哪些文件不需要传输。
选项-i
( --itemize-changes
) 导致rsync
输出有关每次传输的信息。
在一条评论您提到您可能想针对 AWS S3 存储桶执行此操作。
在这种情况下,您可以使用
aws s3 sync /path/to/source/directory/ s3://bucket/path/to/destination/directory/
如果您的计算机出于某种原因删除了连接,这可能也可以重新启动。
也可以看看
注意:我不是AWS的用户,所以我无法对此进行测试。
答案2
使用GNU find
、xargs
、 和cp
,这将一次复制 10 个文件:
d="destination_directory..."
s="source_directory..."
find "$s" -type f -print0 | xargs -0rn 10 cp -n -t "$d"