Резервное копирование файлов определенного предела в unix

Вот сценарий, у меня 1000 файлов в папке каждый ~ 3 МБ. Я хочу заархивировать все файлы в 50MB каждый zip и удалить исходные файлы.

ПРИМЕЧАНИЕ. 50 МБ может содержать 20 файлов или 10 файлов, но этот почтовый пакет должен быть <= 50 МБ.

Я хочу передать эти файлы без потери данных. Файл должен иметь формат (tar / gzip / bzip). Пожалуйста, предоставьте мне предложения, если у нас есть другой способ преодолеть потерю данных.

Необходимо создать сценарий оболочки.

3 Solutions collect form web for “Резервное копирование файлов определенного предела в unix”

Одним из решений является использование команды split.

Команда split разбивает архив на несколько файлов, выполняя всю тяжелую работу для вас.

Вот пример:

tar -cvf - file1 file2 file3 | split --bytes=50m --suffix-length=4 --numeric-suffix - myarchive.tar. 

И чтобы развернуть:

 cat myarchive.tar.* | tar xvf - 

zip пакет поддерживает сжатие bzip2 и --split .

Будет ли bzip2 отвечать вашим требованиям?

-s splitsize –split-size splitsize Включить создание разделенного архива и установить размер разделения. Разделенный архив – это архив, который можно разделить на многие файлы. По мере создания архива, если размер архива достигает указанного размера разделения, этот сплит закрывается и открывается следующий раскол.

Разделенный размер – это число, необязательно сопровождаемое множителем. В настоящее время число должно быть целым числом. В настоящее время множитель может быть одним из k (килобайт), м (мегабайт), g (гигабайт) или t (терабайт). Поскольку 64k – минимальный размер разделения, числа без множителей по умолчанию равны мегабайтам. Например, для создания разделенного архива с именем foo с содержимым каталога bar с разбиением 670 МБ, которое может быть полезно для записи на компакт-дисках, команда:

zip -s 670m -r foo bar

может быть использован.

Чтобы обеспечить целостность данных, rsync с проверкой контрольной суммы. Это намного медленнее, но будет вычислять контрольную сумму с обеих сторон передачи.

-c, –checksum

Это изменяет способ проверки rsync, если файлы были изменены и нуждаются в передаче. Без этой опции rsync использует lqquick checkrq, который (по умолчанию) проверяет, совпадают ли размер и время последнего изменения между отправителем и получателем. Этот параметр меняет это, чтобы сравнить 128-битную контрольную сумму для каждого файла с соответствующим размером. Генерирование контрольных сумм означает, что обе стороны будут тратить много дискового ввода-вывода, считывая все данные в файлах в передаче (и это до любого чтения, которое будет сделано для передачи измененных файлов), поэтому это может замедлить работу значительно.

От: man zip , man rsync

непроверенной

 cd /the/directory files=(*) i=0 z=0 create_zip=true for ((i=0; i<${#files[@]}; i++)); do if $create_zip; then ((z++)) zip_file=prefix.$z.zip create_zip=false fi # add the file zip $zip_file "${files[i]}" # check the size if (( $(stat -c %s $zip_file) >= 50000000 )); then # remove the previous file zip -d $zip_file "${files[i]}" create_zip=true # decrement the file index so this file gets added to the next zip ((i--)) else echo rm "${files[i]}" ### remove "echo" if it's OK fi done 
  • Как определить, где расширился архив
  • Могу ли я взять вывод ldd и загрузить файлы .so?
  • Как избежать перезаписи существующих файлов при использовании команды tar?
  • Ошибка AIX tar: сейчас недостаточно памяти.
  • Каталог Untar из большого tarball
  • tar-файлы из другого каталога без их копирования
  • В чем разница между tar полной файловой системы и изображением?
  • Сжимать каталог с помощью tar / gz через SSH на локальный компьютер?
  • Как я могу выполнить вывод tar через mv?
  • Как собирать случайные фрагменты файла tar?
  • Открыть tar-файл, который заканчивается на .b
  • Linux и Unix - лучшая ОС в мире.