我有一个目录,其中包含几个大文件,每个文件都大于 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/{}" \;