Использование `sem` для запустить параллельный сценарий

Если любая из 100 частей будет потеряна/повреждена, вы не сможете восстановить ни одного файла, я бы больше склонялся к 100 отдельным архивам, каждый из которых зашифрован.

Но, с одним гигантским разделенным файлом вам может понадобиться 12 гигабайт свободного места для повторной сборки частей, и еще 12 для расшифровки/просмотра архива, если ваши инструменты не поддерживают передачу по трубам stdin/stdout.

Использование tar, gpg и split вместе должно работать, например:

tar -c files | gpg -o- ... | split -b [size 1/100th of total] -

Опции для split, которые могут быть полезны, могут включать:

  • -a3 генерировать суффиксы длины N (по умолчанию 2)
  • -d использовать числовые суффиксы вместо буквенных.
  • - чтение стандартного ввода.
  • outputfilename. имя выходных файлов
1
21.06.2016, 15:21
2 ответа

Самое простое решение - процитировать команду, переданную в sem:

sem -j+0 "find \"$i\" -type f -print0"

Вы можете увидеть разницу в этом примере

$ sem -j 8 echo "a  a" 
a a
$ sem -j 8 'echo "a  a"' 
a  a
3
27.01.2020, 23:26

Используйте вместо этого параллельный:

doit() {
  i="$1"
  find "$i" -type f -print0 | xargs -r0 cat | md5sum |
    awk '{ print $1 }' |
    sort | md5sum
}
export -f doit
find -type d -links 2 | parallel --tag doit
1
27.01.2020, 23:26

Теги

Похожие вопросы