Obecnie RSyncuję tylko następujące elementy Directories
:
* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html
Więc jak mam rsync
jednego pliku podobnego /var/www/public_html/.htaccess
?
Robisz to w taki sam sposób, jak w przypadku katalogu, ale jako źródło określasz pełną ścieżkę do nazwy pliku. W twoim przykładzie:
rsync -avz --progress /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/
Jak wspomniano w komentarzach: ponieważ -a
zawiera recurse , jedna mała literówka może spowodować rozpoczęcie pełnego transferu drzewa katalogów, więc bardziej niezawodnym podejściem może być po prostu użycie go -vz
lub zastąpienie go -lptgoD
.
Podstawowa składnia
Przykład
Czytaj więcej
źródło
Odpowiedź Michaela Place działa świetnie, jeśli względem katalogu głównego zarówno źródła, jak i celu, wszystkie katalogi w ścieżce pliku już istnieją.
Ale co, jeśli chcesz zsynchronizować plik z tą ścieżką źródłową:
/ source-root / a / b / plik
do pliku z następującą ścieżką docelową:
/ target-root / a / b / plik
a katalogi a i b nie istnieją?
Musisz uruchomić polecenie rsync, takie jak następujące:
źródło
Do tej pory dwie odpowiedzi nie są całkiem poprawne, otrzymają więcej niż jeden plik, a drugi nie jest tak prosty, jak mógłby być, oto prostsza odpowiedź IMO.
Poniższe polecenie pobiera dokładnie jeden plik, ale musisz utworzyć katalog dest za pomocą mkdir. To prawdopodobnie najszybsza opcja:
Jeśli w katalogu / remote / path jest tylko jedno wystąpienie pliku, rsync może utworzyć katalogi, jeśli wykonasz następujące czynności. Prawdopodobnie zajmie to trochę więcej czasu, ponieważ przeszukuje więcej katalogów. Dodatkowo stworzy puste katalogi dla katalogów w / remote / path, których nie ma w ./local
Pamiętaj, że liczy się kolejność - uwzględnij i - wyklucz.
źródło