我需要将大量文件从一台服务器移动到另一台服务器。所有文件都是图像,相当小,但总共10GB +。
我试图使用tar和gzip,但由于“参数太多”而失败了。
如何解决“太多争论”问题?
或许还有另一种方式 - SCP或rsync可以这样做吗?
这两个框都是Ubuntu。
修改
以下似乎只是挂起而没有任何反应,在命令退出后,images.tar.gz文件的大小为零。
tar -zcvf images.tar.gz images
答案 0 :(得分:1)
尝试cpio
,它会从stdin
读取文件列表。您可以通过ssh
:
find images -print0 | cpio -o0x ustar | ssh user@host cpio -i
或使用压缩
find images -print0 | cpio -o0x ustar | gzip | ssh user@host 'gunzip | cpio -i'
实际上这个答案是行不通的,因为GNU cpio
只实现了有限大小的存档格式。答案已更新为使用ustar
格式,该格式超过默认值的2 GiB限制,但仍然只有8 GiB。 Mark Addler的tar
答案可能是获取大量数据的最佳方式。
答案 1 :(得分:1)
-T -
将从stdin读取文件名。所以你可以这样做:
find . -name \*.jpg -print0 | tar -zcvf images.tar.gz --null -T -
但是我会建议使用rsync,正如我在评论中所说的那样。
如评论中所述,print0
使用空值('\ 0')来终止文件名,并使用--null
来使用tar,以便接受更多通用文件名和空格其他终结者。