我使用以下命令将所有文件压缩到并行目录中:
cd /volume1/Backup/VHDX; for i in */; do zip -0 -r "${i%/}.zip" "$i" & done; wait
创建所有 zip 后,我将它们移动到 NTFS 格式的 USB 驱动器,如下所示:
cd /volume1/Backup/VHDX; find . -name "*.zip" -exec cp {} /volumeUSB1/usbshare \;
我想知道是否可以在创建后将每个 .zip 直接移动到目标位置(因此将副本添加到第一个命令中),而不是先创建所有 zip,并且只有在创建完所有 zip 后才开始复制它们。有办法吗?
直接在 USB 驱动器上创建 zip 非常慢(压缩的数据很多),这就是为什么我首先在本地创建它然后才移动它的原因。
让我们先解开你的oneliner:
完成后现在移动文件
zip
:但是现在我们一次只压缩一个目录,可能同时移动完成的文件。我们可以通过使用 subshell 来解决这个问题:
或者,您可以使用
pigz
而不是zip
一次压缩一个文件,而是使用多个 CPU 线程。