Як зробити каталог каталогом, не зберігаючи структуру каталогу?


86

Я працюю над сценарієм резервного копіювання і хочу визначити каталог файлів:

tar czf ~/backup.tgz /home/username/drupal/sites/default/files

Це видаляє його, але коли я знімаю з файлу, який вийшов, він включає повну структуру файлів: файли знаходяться в home/username/drupal/sites/default/files.

Чи є спосіб виключити батьківські каталоги, щоб отриманий tar просто знав про останній каталог ( files)?

Відповіді:


39
cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz *

19
Ви також можете використовувати опцію -C tar.
GuruM

9
cd не рекомендується та спричиняє помилки, наприклад великі сценарії або файли make. Відповідь нижче є більш загальнодоступною та правильною.
Грегор

Пробує -Cі --directoryне працює для мене на Ubuntu 16.04. Це єдиний варіант, який працює.
haxpor

Це єдиний варіант, який працює -C додати a. коренева папка, а це не те, що ми хочемо.
Ніколас Доріє

169

Використовуйте параметр --directory:

 tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files 

1
Що робити, якщо я хочу розмістити тут 2 каталоги?
Шанпей Чжоу

@ user3352668 просто додайте два каталоги. Наприклад, якщо за замовчуванням містяться "файли" та "morefiles", просто додайте "morefiles" у рядок nbt. До речі: Найкращим рішенням є nbt, це має бути прийнята відповідь
Анонім

4
-C DIR - це те саме, що --directory = DIR , змінює каталог на DIR
Markus

1
Просто подумав, що я згадаю, що порядок тут важливий. Ви не можете мати --directory="/home/username/drupal/sites/default files"перед місцем призначення ~/backup.tgz.
Кріс Стричинський

6
@ChrisStryczynski Зверніть увагу, що шлях, вказаний --directoryпараметром, не є таким "/home/username/drupal/sites/default files". Це /home/username/drupal/sites/default, з подальшим позиційним аргументом , що вказує ім'я каталогу бути заархівовані, files.
Глава

52

Привіт, у мене є краще рішення, коли ввести у вказаний каталог неможливо (Makefiles тощо)

tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed .

Не забудьте крапку (.) В кінці !!


4
Що робить крапка в кінці?
Bruce Sun

3
@BruceSun -C змінює ваш робочий каталог. Крапка повідомляє tar, який каталог ви хочете архівувати (тобто поточний робочий каталог).
user12345

2
Якщо ви пропустите крапку в кінці, ви, ймовірно, отримаєте попередження: tar: Боязко відмовляється створювати порожній архів
user12345

3
Усі говорять про варіант -C або --directory, але без малого '.' зрештою, як @MaikolD згадав про це, це не працює - принаймні в моєму оточенні.
aks

6
Це все ще залишає вам .папку в корені смоли
електровір

2

Для створення архівів усіх файлів txt (* .txt) із /home/myuser/workspace/zip_from/ до /home/myuser/workspace/zip_to/без структури каталогів вихідних файлів використовуйте таку команду:

tar -P -cvzf /home/myuser/workspace/zip_to/mydoc.tar.gz  --directory="/home/myuser/workspace/zip_from/" *.txt

2

Створіть архів tar

tar czf  $sourcedir/$backup_dir.tar --directory=$sourcedir WEB-INF en

Un-tar файли на локальній машині

tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/

Завантажте на сервер

scp -r -i $privatekey $sourcedir/$backup_dir.tar $server:$deploydir/med365/
echo "File uploaded.. deployment folders"

Un-tar на сервері

ssh -i $privatekey $server tar -xvf $deploydir/med365/$backup_dir.tar -C $deploydir/med365/


0

Для мене -C або --directory не працював, я використовую це

cd source/directory/or/file
tar -cvzf destination/packaged-app.tgz *.jar
# this will put your current directory to what it previously was
cd -

0

Будь ласка, використовуйте наведену нижче команду для створення tar-файлу без структури каталогів

tar -C <directoryPath> -cvzf <Path of the tar.gz file> filename1 filename2... filename N

наприклад:

tar -C /home/project/files -cvzf /home/project/files/test.tar.gz text1.txt text2.txt

-3
tar -Cczf ~/backup.tgz /home/username/drupal/sites/default/files

-C робить компакт-диск для вас


Це не спрацює. Див. Рішення MaikoID та Ніла Баттерворта.
Вінсент

3
-Cпрацює, але має використовуватися як-C <dir> file1 file2 ...
вьом
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.