Я знаю, что здесь есть несколько квестов на ту же тему, но ответы мне не помогли.
Во-первых, это мой сценарий. Он должен скопировать все файлы из источника в место назначения (с сохранением всех прав и т. Д.). Если файл или каталог удаляются в источнике, он также должен быть удален в адресате. Что не правильно работает.
#!/bin/bash
## Basic RSync Command
RCMD="rsync -rulpEXogtzh --stats --delete --force"
DDIR="/tank/bak/s1/archive/"
SDIR="/tank/bak/s1/backup/"
CDAY=`date '+%u'`
echo "Archive Number: ${CDAY}"
echo "Archiving current backup"
$RCMD $SDIR $DDIR/$CDAY
Если у меня в источнике есть следующие каталоги:
/etc
/home
/root
/usr
и синхронизируйте их, у меня есть следующие каталоги в цели:
/etc
/home
/root
/usr
так что это отлично работает. Теперь, когда я удаляю / usr из источника, мой источник выглядит так:
/etc
/home
/root
но когда я снова запускаю скрипт, моя цель по-прежнему выглядит так:
/etc
/home
/root
/usr
поэтому почему-то rsync игнорирует --delete
rsync выводит это:
Number of files: 1983645
Number of files transferred: 0
Total file size: 17.69G bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 42.68M
File list generation time: 0.083 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 42.68M
Total bytes received: 4.70K
sent 42.68M bytes received 4.70K bytes 155.52K bytes/sec
total size is 17.69G speedup is 414.50
Кто-нибудь знает, почему?
Спасибо за любой ответ!
Каталог не будет удален, если это запрещено разрешениями или если каталог не пуст. Часто есть файлы, которые нельзя удалить, потому что они неизменяемы или защищены иным образом. Что значит ls -a /usr
показать по месту назначения?
Вы можете попробовать --force-delete
флаг, но сначала запустите его с -n
(режим пробного запуска), чтобы увидеть, что он удалит.
В моем случае с rsync 3.1.2 --force
или --force --delete
параметры по-прежнему не удаляли каталоги в папке назначения.
В --delete-excluded
вариант, однако, действительно удалял папки.