tar: удаление начального `/ 'из имен элементов" оно не является дубликатом " - PullRequest
0 голосов
/ 07 января 2020
#!/bin/bash

source="/home/user/work/tar/deneme"
source2="/home/user/work/tar/deneme1"
for i in {1..5}
do
        tar -czvf $source2/$i/$i.tar.gz $source/$i/
done

Я получаю это сообщение об ошибке.

tar: Removing leading / 'от имен участников`

это мой скрипт и ошибка. Здесь много вопросов, но моя проблема не решается. Я запускаю скрипт, а не скрипт создаю файл .tar.gz. Но если я распакую эту команду tar -xzvf 1.tar.gz, мой файл будет создан с полным путем, например home/user/work/tar/deneme/1/1-1.txt.

У вас есть идеи?

Я пробую несколько способов. Например, Найти / SED для преобразования абсолютного пути в относительный путь в одной строковой инструкции tar для crontab https://unix.stackexchange.com/questions/59243/tar-removing-leading-from-member-names/59244

Ответы [ 2 ]

0 голосов
/ 08 января 2020

Спасибо за все ваши комментарии и ответ.

Я нашел решение. Я изменяю некоторые коды. который внутри для l oop

mkdir $source2/$i
cd $source/
tar -czvf $source2/$i/$i.tar.gz $i/*
0 голосов
/ 08 января 2020

Это потому, что GNU tar удаляет ведущий / (по умолчанию). Чтобы избежать этого, вы можете переписать свой скрипт следующим образом:

#!/bin/bash
cd /home/user/work/tar
source="deneme"
source2="deneme1"
for i in {1..5}
do
         mkdir -p ${source2}/${i}
        tar -czvf ${source2}/${i}/${i}.tar.gz ${source}/${i}/
done
...