я хочу заархивировать содержимое внутри /some/directory/, и в этом каталоге есть много файлов и других подкаталогов в Это.
В чем фактическая разница между приведенными ниже tar-командами? Я заметил, что последняя команда содержит больше файлов в tar-архиве по сравнению с первой.
я сравнил, используя tar -tvf | wc -l
для каждого архива
cd /some/directory/
tar -cvf /tmp/directory.tar *
по сравнению с
tar -cvf /tmp/directory.tar -C /some/directory/ .
Первая команда будет tar
рекурсивно перебирать все файлы внутри /some/directory
, где шаблон *
совпадает. Как правило, это все не -скрытые файлы. Если вы используете bash
, вам необходимо включить параметр оболочки dotglob
с помощью shopt -s dotglob
, чтобы также сопоставлять скрытые файлы перед запуском команды.
Вторая команда изменяет каталог на /some/directory
и включает текущий каталог .
и все файлы, включая скрытые файлы внутри него. Он также добавляет ./
в качестве родительского каталога в архив. Вы можете увидеть эту дополнительную папку с tar tf /tmp/directory.tar
, но нет никакой разницы с первой командой при извлечении (, кроме отсутствия скрытых файлов и того, что все файлы во втором архиве имеют префикс относительного пути./
)