Назад | Перейти на главную страницу

Содержимое каталога tar без родительского и исключить подкаталоги / файлы

Упрощенная структура каталогов:

/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 для быстрого и безопасного метода шифрования. Извините, слегка ОТ.