Удалите все линии, которые содержат $ PWD

Если вы хотите включить файлы, на которые указывают симлинки, используйте -h.

tar -chzf foo.tar.gz directory/

Разрешения и права собственности сохраняются по умолчанию. Если вы хотите просто включить симлинки как симлинки, опустите -h. Маленькие -z предназначены для gzip.

Все это описано в man tar; вы можете искать термины (например, "симлинк") в man через прямую косую черту /.


Когда вы распаковываете архив (tar -xzf foo.tar.gz), право собственности будет сохранено только в том случае, если вы распаковываете от имени root, иначе все файлы будут принадлежать вам. Это особенность, поскольку в противном случае обычному пользователю часто было бы невозможно получить доступ к файлам в архиве, который он (например) скачивает. Модальные разрешения (чтение/запись/выполнение) останутся прежними. Если в качестве обычного пользователя вы хотите сохранить право собственности, вы можете использовать ключ -p (так tar -xzpf foo.tar.gz).

Однако есть одна загвоздка.

Владение файлом на самом деле хранится в виде номера, а не имени; система сообщает имена, соотнося их со значением из /etc/passwd. Вы можете найти номер, соответствующий вашему имени пользователя, с помощью:

grep yourusername < /etc/passwd

Что приведет к выводу чего-то вроде:

piotek:x:1001:1001::/home/piotek:/bin/bash

Первое число - это номер вашего пользователя, второе - номер вашей группы (обычно они одинаковы). Остальные поля описаны в man 5 passwd (обратите внимание на 5).

Как следствие, если вы закачаете некоторые файлы в tar и распакуете их на другой системе от имени root или используя -p (чтобы сохранить право собственности), и на этой системе есть пользователь с номером пользователя 1001, эти файлы будут принадлежать этому пользователю, даже если его имя не piotek (и даже если на системе есть пользователь piotek с другим соответствующим номером).

Страница руководства tar немного запутана в этом отношении, поскольку она ссылается на переключатель -p как на включающий разрешения файлов. Это обычная для *nix двусмысленность в контексте, где состояние битов чтения/записи/исполнения называется режимом.

1
25.12.2018, 15:19
1 ответ
grep -v "^$PWD$" FILE-LIST
  • -vинвертирует поиск, поэтому печатаются только не совпадающие -строки
  • ^...$гарантирует, что шаблон соответствует только всей строке (, иначе все подкаталоги $PWDтакже будут отфильтрованы)
5
27.01.2020, 23:15

Теги

Похожие вопросы