我需要销毁的服务器上有一个60千兆字节的文件夹。但是,我只剩下6G的服务器空间。
除了文件夹的大小外,其中还有数十万个小文件。所以做一个简单的scp
将需要永远。我真的想tar czf
这个文件夹,但同样,我没有空间。
有没有办法做到这一点?
答案 0 :(得分:1)
您可以使用的另一种方法(并且它满足请求的“转移到另一台服务器”部分):
tar cz sourcedir/ | ssh somewhere 'cat > dest.tar.gz'
与scp不同,它不会针对每个小文件进行单独的往返操作,因此它的速度与gzip一样快(或者就像网络可以传输的速度一样快,如果速度慢的话)。由于存档已写入远程服务器,因此您不必担心磁盘空间。而且由于不是正在删除它,你可以^ C它没有留下你原来位置的一半文件而另一半留在tarball中。
您还可以通过更改为
在目标端获取实时文件系统(而不是存档)tar cz sourcedir/ | ssh somewhere 'tar xC destdir/'
有点像rsync
而没有“同步”。在右侧tar命令中添加v
以列出目标服务器收到文件时的文件。
答案 1 :(得分:0)
我发现了解决方案并想分享这个:--remove-files
是实现这一目标的方法。
所以我的命令就是这样:
tar --remove-files -czf cpm006.tar.gz cpm006/
在第二个终端窗口中,多次输入du -sh /home/cpm006
确认文件正在被删除,因为它们被添加到tar存档中。
显而易见的好处是,即使空间有限,您也可以使用存档来释放磁盘空间。