Я пытаюсь создать файл .tar.gz с файлами или каталогами в параметрах для резервного копирования.
Однако, когда я создаю архив .tar.gz, у меня есть эта ошибка:
tar: path_directory_1: cannot stat: No such file or directory
tar: path_directory_2 : cannot stat: No such file or directory
tar: Stopped with failed status due to previous errors
Как я построил архив:
tar zcvf $dirbackup/backup-$backupDate.tar.gz $string
, где string:
old_IFS=$IFS
IFS=$'\n'
string="";
for line in $(cat $1); do
string="$string $line"
done
IFS=$old_IFS
$1: файл с файлами путей и файлами путей к save [. d4]
Пример из $1 содержимого (только пути каталогов для сохранения):
~/Documents/MIAGE/L3/semestre5/web
~/Documents/MIAGE/L3/semestre5/communication/
Результат с установкой -x:
+ tar zcvf /var/backups/mesbackups/backup-09-11-2016-13-58/backup-09-11-2016-13-58.tar.gz '~/Documents/MIAGE/L3/semestre5/web' '~/Documents/MIAGE/L3/semestre5/communication/'
tar: ~/Documents/MIAGE/L3/semestre5/web : cannot stat : No such file or directory
tar: ~/Documents/MIAGE/L3/semestre5/communication : cannot stat : No such file or directory
tar: Stopped with failed status due to previous errors
Когда я запускаю эту команду в оболочке, которая работает ...
tar zcvf /var/backups/mesbackups/test/backup-09-11-2016-13-58.tar.gz ~/Documents/MIAGE/L3/semestre5/web ~/Documents/MIAGE/L3/semestre5/communication/
Как я могу сделать с моим скриптом? Это похоже на работу без квот?
Если $1 - это имя файла, содержащего список файлов для добавления в архив, по одному на строку, тогда вы должны просто использовать форму --files-from FILE в tar
[ f1]Если вы по какой-то причине не можете использовать --files-from, то следующим лучшим вариантом является, вероятно, использование массива bash
mapfile -t files < "$1"
tar zcvf "$dirbackup"/backup-"$backupDate".tar.gz "${files[@]}"
, хотя это может иметь проблемы, если количество файлов в $1 очень велико.