Я работаю над миграцией сервера и столкнулся со следующей проблемой:
Я запускаю rsync для переноса всех данных, но по какой-то причине существует ограничение глубины папки ... Это делается с помощью команды rsync over ssh:
rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt' /home 192.168.70.50:/
70.50 - это новый сервер, и я запускаю команду на старом сервере. Структура папок очень глубокая, до 20 папок в глубину.
Таким образом, большинство файлов и папок копируются, но все папки с глубиной 10 и более - нет. Если я укажу более глубокие папки
rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt'/home/user/blablabla/domain/web to 192.168.70.50:/home/user/blablabla/domain
он начинает рекурсивно копировать оставшиеся папки ...
У кого-нибудь есть исправление для этого?
rsync не имеет ограничений на глубину прохода подкаталогов. В частности, он превышает предел файловой системы Linux. Я просто скопировал что-то глубиной около 500 уровней, и rsync отлично это скопировал.
Если вы столкнулись с этой проблемой, проверьте следующее:
--no-inc-recursive
(это более новый алгоритм, и вы могли обнаружить ошибку)-z
Вот еще один способ попробовать. Если работает, но rsync
нет, то, возможно, вы нашли ошибку в rsync
:
Это будет tar
файлы с одной стороны, отправьте tar-файл на стандартный вывод, ssh на другую сторону и распакуйте файлы там.
SOURCEDIR=/path/to/source
DESTHOST=machinename
DESTDIR=/path/to/destination
cd "$SOURCEDIR" && tar -c -v -f - . | ssh "$DESTHOST" "cd $DESTDIR && tar -x -p -f -"
Предупреждение: если в $ DESTDIR есть пробелы или специальные символы, необходимо более тщательно процитировать приведенное выше.