1

У меня есть структура папок, например, так:

file1
file2
file3
file4
folder1
folder2

Без записи каждого файла, как я могу архивировать все файлы и папки, кроме file1 и folder1?

3 ответа3

5

Вы можете использовать опцию --exclude=pattern которая запрещает работу с любым файлом или элементом, чье имя соответствует шаблону (шаблону). Например, чтобы создать архив со всем содержимым каталога src за исключением файлов, имена которых заканчиваются на .exe , используйте команду tar -cf src.tar --exclude='*.exe' src

4

У tar есть ключ --exclude.

1

Без записи каждого файла, как я могу архивировать все файлы и папки, кроме file1 и folder1?

Предполагая, что основная папка, содержащая все файлы / папки, которые вы хотите сжать, находится в /home/admin/mystuff/ (то есть /home/admin/mystuff/file1 , /home/admin/mystuff/folder1/ и т.д.), Либо из следующего должно работать.


Если вы сейчас находитесь в папке /home/admin/ , вы можете сделать это:

tar -cz --exclude mystuff/file1 --exclude mystuff/folder1/ -f my_new_file.tar.gz mystuff

Или, если вы находитесь в каталоге, который хотите сжать (в данном случае /home/admin/mystuff/), вы можете сделать:

tar -cz --exclude file1 --exclude folder1/ -f my_new_file.tar.gz .

Обратите внимание на точку в конце второго варианта.

Также обратите внимание, что я использовал tar -cz потому что я предпочитаю файлы .tar.gz ... Если вам нужен только файл .tar , вы можете просто изменить команду на tar -c --exclude [...] (отбрасывая z из -cz), а затем изменить выходной файл с my_new_file.tar.gz на my_new_file.tar

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .