Próbuję rsync katalog A serwera1 z katalogiem B serwera2.
Siedząc w katalogu A serwera server1, uruchomiłem następujące polecenia.
rsync -av * server2::sharename/B
ale interesującą rzeczą jest to, że synchronizuje wszystkie pliki i katalogi z wyjątkiem .htaccess lub dowolnego ukrytego pliku w katalogu A. Wszelkie ukryte pliki w podkatalogach są synchronizowane.
Wypróbowałem również następujące polecenie:
rsync -av --include=".htaccess" * server2::sharename/B
ale wyniki są takie same.
Wszelkie pomysły, dlaczego ukryte pliki katalogu A nie są synchronizowane i jak to naprawić. Pracuję jako użytkownik root.
dzięki
Odpowiedzi:
Wynika to z faktu, że
*
jest on domyślnie rozszerzany na wszystkie pliki w bieżącym katalogu roboczym, z wyjątkiem plików, których nazwa zaczyna się od kropki. Dlategorsync
nigdy nie otrzymuje tych plików jako argumentów.Możesz przekazać
.
oznaczenie bieżącego katalogu roboczego dorsync
:W ten sposób
rsync
będzie szukać plików do przesłania w bieżącym katalogu roboczym, zamiast szukać ich w tym, co się*
rozwija.Alternatywnie możesz użyć następującego polecenia, aby
*
rozwinąć wszystkie pliki, w tym te, które zaczynają się kropką:shopt -s dotglob
Zobacz także stronę podręcznika shopt .
źródło
rsync -avz [email protected]:/remote/path/. /destination/path
wykonuje robotęDla każdego, kto tylko próbuje katalogów synchronizacji między serwerami (w tym wszystkie ukryte pliki) - np synchronizacja
somedirA
nasource-server
celusomedirB
na serwerze docelowym - spróbuj tego :Zwróć uwagę na ukośniki na końcu obu ścieżek. Każda inna składnia może prowadzić do nieoczekiwanych wyników!
Ponadto, dla mnie najłatwiej jest wykonać
rsync
polecenia z serwera docelowego, ponieważ łatwiej jest upewnić się, że mam odpowiednie uprawnienia do zapisu (tj. Może być konieczne dodaniesudo
do powyższego polecenia).Prawdopodobnie jest to oczywiste, ale oczywiście twój zdalny użytkownik również potrzebuje dostępu do odczytu
somedirA
na serwerze źródłowym. :)źródło
.htaccess
plik?-e ssh
określa metodę łączenia.Miałem ten sam problem.
U mnie, gdy wykonałem następujące polecenie, ukryte pliki nie zostały zsynchronizowane
Ale kiedy dodałem ukośniki na końcu ścieżek, ukryte pliki zostały zsynchronizowane.
Zwróć uwagę na cięcia na końcach ścieżek , ponieważ Brian Lacy powiedział, że są one kluczem. Nie mam reputacji, by komentować jego post, bo inaczej bym to zrobił.
źródło
shopt -s dotglob
do swojego skryptu przed rsyncMyślę, że problem jest spowodowany rozszerzaniem się symboli wieloznacznych powłoki. Posługiwać się . zamiast gwiazdy.
Rozważ następującą przykładową zawartość katalogu
Rozwijanie symboli wieloznacznych powłoki tłumaczy listę argumentów, z której pobiera program rsync
w
zanim polecenie zacznie być wykonywane.
źródło
*
Tell do rsynch aby nie synchronizować pliki ukryte. Nie powinieneś tego pomijać.źródło