Как мне сменить каталог без сохранения структуры каталога?
Я работаю над сценарием резервного копирования и хочу архивировать файловый каталог:
tar czf ~/backup.tgz /home/username/drupal/sites/default/files
Это мешает, но когда я распаковываю полученный файл, он включает полную файловую структуру: файлы находятся в home/username/drupal/sites/default/files
,
Есть ли способ исключить родительские каталоги, чтобы результирующий tar просто знал о последнем каталоге (files
)?
11 ответов
cd /home/username/drupal/sites/default/files
tar czf ~/backup.tgz *
Используйте параметр --directory:
tar czf ~/backup.tgz --directory=/home/username/drupal/sites/default files
Привет у меня есть лучшее решение, когда войти в указанный каталог, это невозможно (Makefiles и т. Д.)
tar -cjvf files.tar.bz2 -C directory/contents/to/be/compressed .
Не забывайте точку (.) В конце!!
Создать 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/
Чтобы использовать решения nbt и MaikoID :
tar -czf destination.tar.gz -C source/directory $(ls source/directory)
Это решение:
- Включает все файлы и папки в каталоге
- Не включает какую-либо структуру каталогов (или
.
) в конечном продукте - Не требует от вас смены каталогов.
Однако он требует, чтобы каталог был указан дважды, поэтому он может быть наиболее полезен в другом скрипте. Это также может быть менее эффективным, если в папке много файлов/папок.
source/directory
. При необходимости измените подкоманду.
Так, например, для следующей структуры:
|- source
| |- one
| `- two
`- working
следующая команда:
working$ tar -czf destination.tar.gz -C ../source $(ls ../source)
будет производить
destination.tar.gz
где оба
one
а также
two
(и подфайлы/папки) являются первыми элементами.
Если вы хотите архивировать файлы с сохранением структуры, но частично или полностью игнорировать ее при извлечении, используйте аргумент --strip-components при извлечении.
В этом случае, если полный путь — /home/username/drupal/sites/default/files , следующая команда извлечет содержимое tar.gz без полной структуры родительского каталога, сохранив только последний каталог пути (например, файлы /файл1).
tar -xzv --strip-components=5 -f backup.tgz
Я нашел этот совет на https://www.baeldung.com/linux/tar-archive-without-directory-structure#5-using-the---strip-components-option.
Разархивировать все 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
Для меня -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 -
Это сработало для меня:
gzip -dc "<your_file>.tgz" | tar x -C <location>
Пожалуйста, используйте приведенную ниже команду для создания файла 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
tar -Cczf ~/backup.tgz /home/username/drupal/sites/default/files
-C делает CD для вас