使用 cp 将每 10 个文件从源复制到目标目录

使用 cp 将每 10 个文件从源复制到目标目录

我的一个目录中有 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 findxargs、 和cp,这将一次复制 10 个文件:

d="destination_directory..."
s="source_directory..."
find "$s" -type f -print0 | xargs -0rn 10 cp -n -t "$d"

相关内容