Mam folder zawierający pliki dla statycznej witryny internetowej, np .:
/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...
Jeśli zaktualizuję coś na swoim laptopie, chcę, aby jedno polecenie wysłało pliki na mój serwer Ubuntu. Nie chcę konfigurować na nim FTP, jeśli też nie mam, zastanawiając się, czy scp byłby w stanie to obsłużyć?
tar
przezssh
: unix.stackexchange.com/a/10028/79839Odpowiedzi:
Polecenie
scp -r source user@target:dest
przejdzie wszystkie podkatalogi źródła i skopiuje je.Jednak
scp
zachowuje się jakcp
i zawsze kopiuje pliki, nawet jeśli są takie same zarówno w źródle, jak i miejscu docelowym. [Zobacz tutaj na obejście.]Ponieważ jest to statyczna strona internetowa, najprawdopodobniej dokonujesz tylko aktualizacji, a nie odtwarzasz całość, więc prawdopodobnie zauważysz, że rzeczy posuwają się szybciej, jeśli używasz
rsync
ssh zamiastscp
. Prawdopodobnie coś takiego...rozpocząć. Jeśli robisz to w sieci LAN, osobiście skorzystałbym z opcji
-avW
zamiastrsync
.Rsync daje także możliwość powielania usunięć w twoim źródle; więc jeśli usuniesz plik ze swojego drzewa, możesz uruchomić
rsync
jak wyżej i dołączyć flagę,--delete
a usunie ten sam plik ze strony docelowej.źródło
scp ma flagę rekurencyjną, która zrobi to, co chcesz.
scp -r /base/directory user@server:/to/location
z
man scp
źródło
scp -r i rsync -r są najbardziej niezawodnymi sposobami na uzyskanie tego, czego chcesz, jak zauważyli inni.
Możesz także użyć sshfs do „zamontowania” go tak, jakby to był dysk lokalny:
sshfs user@host:/site /mnt/mountpoint
(Jednak prawdopodobnie lepiej jest pracować lokalnie i wdrażać za pomocą rsync. Kolejne narzędzie, o którym należy pamiętać.)
źródło