У меня есть структура папок, например, так:
file1
file2
file3
file4
folder1
folder2
Без записи каждого файла, как я могу архивировать все файлы и папки, кроме file1 и folder1?
Вы можете использовать опцию --exclude=pattern
которая запрещает работу с любым файлом или элементом, чье имя соответствует шаблону (шаблону). Например, чтобы создать архив со всем содержимым каталога src
за исключением файлов, имена которых заканчиваются на .exe
, используйте команду tar -cf src.tar --exclude='*.exe' src
У tar есть ключ --exclude.
Без записи каждого файла, как я могу архивировать все файлы и папки, кроме 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