如何将目录中的所有文件拆分为 4gb 文件并存放到不同的目录中?

如何将目录中的所有文件拆分为 4gb 文件并存放到不同的目录中?

我有一个目录,其中包含几个大文件,每个文件都大于 4gb。我想将所有这些文件复制到另一个目录(恰好是安装的 fat32 usb 驱动器),但将文件拆分为 4gb(因为目标驱动器限制为该大小的文件)。

我尝试过这个:

split -b 4096G /var/lib/backuppc/images/* /usbdrive/

但我得到了

split: extra operand `/var/lib/backuppc/images/xxxxxxxxxmyfilesname.tib'

我做错什么了吗?(也尝试过用“4G”代替4096G,没有区别)

答案1

我的建议是首先创建一个 tar 文件:

tar -cf /tmp/bigfile.tar /var/lib/backuppc/images/*

然后拆分:

cd /usbdrive
split -b 4G /tmp/bigfile.tar

如果您想避免使用临时 tar 文件,您可以将 tar 直接通过管道传输到 split:

tar -cf - /var/lib/backuppc/images/* | split -b 4G

要在到达目的地时重建此文件,请重新创建并取消归档 tar 文件:

cat /usbdrive/x* >bigfile.tar
tar -xvf bigfile.tar

再次,要在不使用临时文件的情况下执行此操作:

cat /usbdrive/x* | tar -xvf -

答案2

split不能将多个输入文件作为参数。

您可以尝试find使用

cd /var/lib/backuppc/images && find . -maxdepth 1 -type f -exec split -b 4G '{}' "/usbdrive/images/{}" \;

相关内容