Rsync по ssh пределу глубины папки?

я работаю над миграцией сервера и сталкиваюсь со следующей проблемой:

Я выполняю rsync для миграции всех данных, но по некоторым причинам существует предел глубины папки... Это сделано через rsync по команде 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

это начинает копировать остающиеся папки рекурсивно...

Кто-либо, у кого могла бы быть фиксация для этого?

1
задан 14 June 2015 в 02:10
1 ответ

rsync не имеет ограничений на глубину подкаталогов, которые он будет перемещать. В частности, он превышает предел файловой системы Linux. Я только что скопировал то, что было глубиной около 500 уровней, и rsync скопировал это нормально.

Если вы столкнулись с этой проблемой, проверьте следующее:

  • неспособна ли файловая система назначения обрабатывать такое количество подкаталогов?
  • является место назначения заполнено?
  • указывает ли файл --exclude-from что-то, что ограничивает файлы?
  • - это общая длина пути ("d / d / d / d" составляет 4 уровня, но 7 символов) сверх того, что файловая система позволяет?
  • заставляет ли отключение инкрементной рекурсии работать? - no-inc-recursive (это более новый алгоритм, и вы, возможно, обнаружили ошибку)
  • работает ли копия с использованием какой-либо другой техники?
  • проблема исчезнет (или без) компрессии? -z

Вот еще одна техника, которую можно попробовать. Если он работает, а rsync - нет, то, возможно, вы обнаружили ошибку в rsync :

Это приведет к tar файлам с одной стороны, отправьте tar-файл на stdout, 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 есть пробелы или специальные символы, необходимо более тщательно процитировать приведенное выше.

1
ответ дан 4 December 2019 в 00:06

Теги

Похожие вопросы