cpio
и gpg
— всего пара команд. Или tar
и gpg
— тоже пара команд.Создание архива:
$ cd ~/work && \
find . -depth -print0 | \
cpio -0 -o | \
gpg -c -a > /mnt/remote/backup/work.cpio.gpg
find
найдёт в текущем каталоге (~/work) все файлы и каталоги, cpio
упакует их в единый архив, gpg
спросит пароль и зашифрует симметричным алгоритмом.Восстановление из резервной копии:
$ mkdir ~/work-restore && \
cd ~/work-restore && \
gpg -d /mnt/remote/backup/work.cpio.gpg | cpio -idv
Можно ещё и сжать
bzip2
, если между cpio
и gpg
вставить bzip2 -c
. Создание архива:$ find . -depth -print0 | cpio -0 -o | bzip2 -c | gpg -c -a > arhive.cpio.bz2.gpg
Восстановление из резервной копии:$ gpg -d archive.cpio.bz2.gpg | bzcat -c | cpio -idv
Проще уже некуда. И при этом вся гибкость
find
к нашим услугам. А это значит, что гораздо проще заархивировать только нужные файлы, а не все подряд. Например, файлы изменённые за последние двое суток легко отбираются с помощью:$ find . -ctime -2
P.S. Конечно, вместо
cpio
можно пользоваться и tar
. find
для выбора нужных файлов — затруднительно$ cd ~/work && \
tar cj . | gpg -c -a > /mnt/remote/backup/work.tar.bz2.gpg
а распаковать так:$ mkdir ~/work-restore && \
cd ~/work-restore && \
gpg -d work.tar.bz2.gpg | tar jx
Дополнение:Как заметил в комментариях Alexey, упаковать найденные find
файлы можно и используя tar
. В этом случае используется опции tar
-T
(читать список файлов из файла) и --null
(имена файлов разделены нулевым байтом). Поясняю на примере, создание зашифрованного архива:$ find . условия поиска -print0 | tar c --null -T - | gpg -c -a > файл_с_архивом.tar.gpg
и распаковка:$ gpg -d файл_с_архивом.tar.gpg | tar x
В общем, дело вкуса.
Смотрите также:
☙ Синхронизация каталогов по SSH+rsync и по FTP☙ Как сделать копию удалённого репозитория Subversion