Упрощенная структура каталогов:
/root/test
/root/test/dir1
/root/test/dir2
/root/test/dir3
/root/test/dir4
Я хочу tar / root / test, чтобы при извлечении архива я получал dir1 и dir2. Я хочу исключить dir3 и dir4 и, возможно, другие файлы и подкаталоги в зависимости от конкретного применения команды.
Я понимаю, что в сети есть много примеров и фрагментов tar, но я не могу получить конкретный пример или объединить те, которые доступны в Интернете, чтобы сделать эту работу, как указано выше. Любая помощь приветствуется.
Думаю, мне удалось это сделать, соединив сказанное здесь с некоторыми экспериментами.
tar -cvf test.tar --exclude-from=exclude --directory="/root/test" .
Где exclude - это файл с:
dir3
dir4
Как насчет
cd /
tar cvf /tmp/test.tar --exclude="./root/test/dir[34]" ./root/test
если у вас ограниченное количество папок, которые вы хотите заархивировать, вы можете просто сделать
tar -C /root/test -cf arch.tar dir1 dir2
root@pinkpony:~# ls /root/test/
dir1 dir2 dir3
root@pinkpony:~# pwd
/root
root@pinkpony:~# tar -C /root/test -cf arch.tar dir1 dir2
root@pinkpony:~# tar tf arch.tar
dir1/
dir2/
ИЗМЕНИТЬ (сделайте код, включенный в комментарий, читаемым):
если у вас есть сложные правила для создания списка каталогов, которые вы хотите архивировать, вы можете запустить сценарий:
root@pinkpony:~# (cd /root/test/ ; ls |grep -E '^dir(1|2)$' | xargs tar cf /tmp/blah.tar )
root@pinkpony:~# tar tf /tmp/blah.tar
dir1/
dir2/
вы можете использовать все, что вам нужно, вместо этой глупой штуковины ls | grep, просто пример; xargs - это та часть, на которую я хочу обратить ваше внимание
FWIW вы также можете указать файл для списка исключений для более длинного списка файлов или каталогов. Это проще, чем настраивать длинную командную строку.
Проверять, выписываться mycrpt
для быстрого и безопасного метода шифрования. Извините, слегка ОТ.