Подтвердить что ты не робот

Rsync не синхронизирует файл .htaccess

Я пытаюсь создать каталог rsync A сервера1 с каталогом B сервера2.

Сидя в каталоге A сервера1, я выполнил следующие команды.

rsync -av * server2::sharename/B

но интересно то, что он синхронизирует все файлы и каталоги, кроме .htaccess или любого скрытого файла в каталоге A. Любые скрытые файлы в подкаталогах синхронизируются.

Я также попробовал следующую команду:

rsync -av --include=".htaccess" * server2::sharename/B

но результаты одинаковы.

Любые идеи, почему скрытые файлы каталога не синхронизируются и как их исправлять. Я работаю как пользователь root.

спасибо

4b9b3361

Ответ 1

Это связано с тем, что * по умолчанию распространяется на все файлы в текущем рабочем каталоге, за исключением файлов, имя которых начинается с точки. Таким образом, rsync никогда не получает эти файлы в качестве аргументов.

Вы можете передать ., указав текущий рабочий каталог на rsync:

rsync -av . server2::sharename/B

Этот способ rsync будет искать файлы для переноса в текущем рабочем каталоге, а не искать их в том, что * расширяет.

В качестве альтернативы вы можете использовать следующую команду, чтобы сделать * expand для всех файлов, включая те, которые начинаются с точки:

shopt -s dotglob

См. также справочная страница shopt.

Ответ 2

Для тех, кто просто пытается синхронизировать каталоги между серверами (включая все скрытые файлы) - например, синхронизация somedirA на source-server до somedirB на целевом сервере - попробуйте:

rsync -avz -e ssh --progress [email protected]:/somedirA/ somedirB/

Обратите внимание на косые черты в конце обоих путей. Любой другой синтаксис может привести к неожиданным результатам!


Кроме того, для меня проще всего выполнять команды rsync с целевого сервера, потому что проще убедиться, что у меня есть надлежащий доступ на запись (т.е. мне может потребоваться добавить sudo в приведенную выше команду).

Возможно, само собой разумеется, но, очевидно, вашему удаленному пользователю также нужен доступ для чтения к somedirA на исходном сервере.:)

Ответ 3

У меня была такая же проблема.

Для меня, когда я выполнил следующую команду, скрытые файлы сделали не get rsync'ed

rsync -av /home/user1 wobgalaxy02:/home/user1

Но когда я добавил косые черты в конце путей, скрытые файлы были rsync'ed.

rsync -av /home/user1/ wobgalaxy02:/home/user1/

Обратите внимание на косые черты в конце путей, так как Брайан Лейси сказал, что косые черты - это ключ. У меня нет репутации, чтобы прокомментировать его сообщение, или я бы это сделал.

Ответ 4

Я думаю, проблема связана с расширением подстановки оболочки. Используйте. вместо звезды.

Рассмотрим следующий пример содержимого каталога

$ ls -a .
. .. .htaccess a.html z.js

Расширение подстановочной оболочки оболочки преобразует список аргументов, который программа rsync получает из

-av * server2::sharename/B

в

-av a.html z.js server2::sharename/B

прежде чем команда начнет выполняться.

Ответ 5

* сообщите rsynch, чтобы не синхронизировать скрытые файлы. Вы пытались его пропустить?