3

Я хочу сделать резервную копию своих систем, чтобы разделить архивы tar с помощью скрипта, загружающего их один за другим. Он должен создать разделенный архив и затем запустить скрипт. Скрипт загружает деталь и удаляет ее. Это сделано для того, чтобы резервные копии не занимали так много места в системе. Я мог бы создать разделенные архивы и загрузить их, но мне понадобилось бы 50% свободного места. Поэтому мне нужно создавать их по одному. Я ищу советы по лучшему подходу. Я имею в виду пару, вы можете предложить лучшую.

Подход первый: разделить архивы с помощью самого tar и использовать --new-volume-script. Проблема в том, что я должен вычислить, насколько большой будет резервная копия. Тар, кажется, требует определенных указаний относительно того, сколько частей будет существовать и насколько они должны быть большими. Это означает, что мой скрипт должен будет рассчитать это и сгенерировать параметры для tar.

tar -c -M -L 102400 --file=disk1.tar --file=disk2.tar --file=disk3.tar largefile.tgz

Это создает три файла по 100 МБ для каждой части. Если есть способ сделать это динамически с помощью tar, автоматически присваивая имена файлам и создавая столько, сколько нужно, я хотел бы знать, потому что это сделало бы этот подход работоспособным.

Подход второй: написать свой собственный сценарий, который ведет себя как разделение. Выходные данные tar передаются на stdin, и он загружает файлы и заставляет tar ждать. Это было бы самым простым решением.

1 ответ1

0

Это решение не использует tar , но вы можете настроить его на работу с afio. Вся логика для разделения архива является встроенной, с возможностью запуска сценариев после каждого разделения тома:

cd /path/to/files -print | \
   afio -oxv -s 1g -H rotate.sh backup-`date -Imin`-Vol%V.afio

И rotate.sh - ваш скрипт для загрузки и удаления каждого файла архива. Это создает архивы:

backup-2014-11-29T18:04-0500-Vol1.afio
backup-2014-11-29T18:04-0500-Vol2.afio
backup-2014-11-29T18:04-0500-Vol3.afio
...

И запускает rotate.sh после завершения каждого тома.

Другие опции:

-o              # create an archive
-x              # perserve ownership suid/sgid
-v              # verbose
-s 1g           # split archives after 1g
-H rotate.sh    # run this script after each 'tape change'
-Z -P xz        # Compress, and use xz instead of gzip
 # Also, %V, below, inserts the volume number into the file name
 backup-`date -Imin`-Vol%V.afio               

Другие аспекты afio : он похож на cpio, за исключением того, что он специально предназначен для резервного копирования по сценарию. Кроме того, это более безопасно для сжатых архивов, потому что в нем хранится каждый файл, сжатый индивидуально, вместо сжатия всего потока. Таким образом, повреждение данных после сжатия влияет только на один файл, а не на весь архив. Таким же образом он может также gpg зашифровать каждый файл при его сохранении, что отлично подходит для облачного хранения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .