Как разделить все файлы в каталоге в 4 ГБ файлов в другой каталог?

У меня есть каталог, содержащий несколько больших файлов, каждый из которых превышает 4 ГБ. Я хочу скопировать все эти файлы в другую директорию (это смонтированный USB-накопитель FAT32), но разделить файлы до 4 Гб (поскольку целевой диск ограничен файлами такого размера).

Я попробовал это:

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

но я получаю

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

Я делаю что-то неправильно? (тоже пробовал "4G" вместо 4096G, без разницы)

2 ответа

Мое предложение было бы сначала создать файл 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 -

split не может принимать более одного входного файла в качестве аргумента.

Вы можете попробовать использовать find за это

cd /var/lib/backuppc/images && find . -maxdepth 1 -type f -exec split -b 4G '{}' "/usbdrive/images/{}" \;
Другие вопросы по тегам