У меня есть скрипт, который скачивает и сжимает папку удаленного сервера (например: /home).
Я пытаюсь создать скрипт «восстановления», но у меня наблюдается странное поведение.
восстановление.sh:
($1 — IP-адрес, $2 — полный путь)
if [ $# -lt 2 ]
then
echo "Error"
exit 1
else
D=$(mktemp -d)
echo "From $D/$2"
echo "To user@$1:/$2"
tar xfz /backup/$1.tar.gz -C $D
rsync -ncavzPe ssh --partial --delete $D/$2 user@$1:/$2
rm -r $D
exit 0
fi
Допустим, удаленный сервер имеет адрес 127.0.0.12, и я хочу восстановить /home.
$ssh 127.0.0.12
$password:
$ls /home/user
a b c x y z
$logout
$sh restore.sh 127.0.0.12 /home
From /tmp/tmp.R8iAewFEIR//home
To [email protected]://home
[email protected]'s password:
sending incremental file list
home/
home/user/
home/user/1
home/user/2
home/user/.cache/
home/user/.cache/motd.legal-displayed
sent 351 bytes received 40 bytes 46.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
$
Разве не предполагается удаление a, b, c, x, y и z? Это просто из-за холостого хода? Это отправка в другую папку?Я сломал сервер, пытаясь сделать что-то подобное.вчера и слишком боюсь пробовать без -n.
решение1
if [ $# -lt 2 ]
then
echo "Error"
exit 1
else
D=$(mktemp -d)
echo "From $D/$2"
echo "To user@$1:/$2"
tar xfz /backup/$1.tar.gz -C $D
rsync -cavzPe ssh --partial --delete $D/$2/* user@$1:/$2/
rm -r $D
exit 0
fi
Я забыл указать папку в исходном коде rsync.