Друзья есть вот такая папка
q и в ней два файла:
Shell
$ find q -type f
q/q/foo
q/foo
$
Сархивируем её в архив, исключив из него файл
q/foo (обращаю внимание на опцию
--exclude):
Shell
$ rm -f temp.tar
$ tar --create --file=temp.tar --exclude=foo q
$ tar tvf temp.tar
drwxr-xr-x user/user 0 2023-08-14 19:37 q/
drwxr-xr-x user/user 0 2023-08-14 19:37 q/q/
$
Не получилось (файл
q/q/foo тоже не сархивировался, а это совсем не наша цель). Ещё пробуем:
Shell
$ rm -f temp.tar
$ tar --create --file=temp.tar --exclude=q/foo q
$ tar tvf temp.tar
drwxr-xr-x user/user 0 2023-08-14 19:37 q/
drwxr-xr-x user/user 0 2023-08-14 19:37 q/q/
$
Тот же результат. Ещё пробуем:
Shell
$ rm -f temp.tar
$ tar --create --file=temp.tar --exclude=./q/foo q
$ tar tvf temp.tar
drwxr-xr-x user/user 0 2023-08-14 19:37 q/
drwxr-xr-x user/user 0 2023-08-14 19:37 q/q/
-rw-r--r-- user/user 0 2023-08-14 19:37 q/q/foo
-rw-r--r-- user/user 0 2023-08-14 19:36 q/foo
$
Опять плохо. Эксперименты с тильдой (
--exclude="^q/foo") тоже не привели в желаемому результату. В общем, при архивации нужно исключить файл
q/foo.
Offtopic
Уверен, можно обойтись без способа, когда сперва всё архивируем. а потом ненужное удаляем:
Shell
$ rm -f temp.tar
$ tar --create --file=temp.tar q
$ tar tvf temp.tar
drwxr-xr-x user/user 0 2023-08-14 19:37 q/
drwxr-xr-x user/user 0 2023-08-14 19:37 q/q/
-rw-r--r-- user/user 0 2023-08-14 19:37 q/q/foo
-rw-r--r-- user/user 0 2023-08-14 19:36 q/foo
$
$ tar --delete --file temp.tar q/foo
$ tar tvf temp.tar
drwxr-xr-x user/user 0 2023-08-14 19:37 q/
drwxr-xr-x user/user 0 2023-08-14 19:37 q/q/
-rw-r--r-- user/user 0 2023-08-14 19:37 q/q/foo
$
Спасибо, кто откликнется.
Debian 11.
Я просто читаю маны.