Назад | Перейти на главную страницу

Tar exclude не работает?

tar -cvf file.tar --exclude=thumbs/ \
                  --exclude=uploads_event/ \
                  --exclude=uploads_forum/ \
                  --exclude=uploads_admin/ \
                  --exclude=uploads_userpoints/ \
                  --exclude=uploads_group/ \
                  --exclude=up_old/ \
                  --exclude=uploads_user/ \
                  --exclude=uploads_wall/ \
                  directory_to_tar/

Я ошибаюсь? Попытка заархивировать весь каталог, но полностью исключить все эти каталоги и любые файлы в этих папках.

С GNU tar вы не можете включать косую черту во все исключения. Однако он будет работать с BSD tar.

Ответ Майкла Лоумена следует принять, но поскольку я все равно привел несколько примеров, я собираюсь обобщить его и оставить, может быть, кто-то найдет в нем ценность.

Чтобы повторить ответ Майкла, кажется, что конечные косые черты на вашем --exclude варианты - ваша проблема.

Я также отмечу, что когда у вас есть тонна вещей, которые нужно исключить, может быть проще поместить его в файл и просто включить файл с параметром -X.

Вот пара практических примеров использования --exclude и -X

g3 0 /home/jj33/swap/t > mkdir -p dir/d1 dir/d2
g3 0 /home/jj33/swap/t > touch dir/{d1,d2}/{f1,f2,f3}
g3 0 /home/jj33/swap/t > find . -type f
./dir/d1/f1
./dir/d1/f2
./dir/d1/f3
./dir/d2/f1
./dir/d2/f2
./dir/d2/f3

#### using the trailing slash, as in your question, doesn't work:
g3 0 /home/jj33/swap/t > tar -cvf file.tar --exclude=d1/f2 --exclude=d2/ dir
dir/
dir/d1/
dir/d1/f1
dir/d1/f3
dir/d2/
dir/d2/f1
dir/d2/f2
dir/d2/f3

# removing the / works better
g3 0 /home/jj33/swap/t > tar -cvf file.tar --exclude=d1/f2 --exclude=d2 dir      
dir/
dir/d1/
dir/d1/f1
dir/d1/f3

# example using a file and -X
g3 0 /home/jj33/swap/t > echo d1/f2 >exclude.txt
g3 0 /home/jj33/swap/t > echo d2 >>exclude.txt  
g3 0 /home/jj33/swap/t > cat exclude.txt 
d1/f2
d2
g3 0 /home/jj33/swap/t > tar -cvf file.tar -X exclude.txt  dir              
dir/
dir/d1/
dir/d1/f1
dir/d1/f3
g3 0 /home/jj33/swap/t >