Jak skopiować cały katalog do katalogu o tej samej nazwie bez zastępowania zawartości katalogu docelowego? (zamiast tego chciałbym dodać do zawartości folderu docelowego)
ssh
rsync
scp
synchronization
Daniel Böhmer
źródło
źródło
Odpowiedzi:
Użyj
rsync
i przekaż,-u
jeśli chcesz aktualizować tylko pliki nowsze w oryginalnym katalogu lub--ignore-existing
pomijać wszystkie pliki, które już istnieją w miejscu docelowym.(Zwróć uwagę
/
na stronę źródłową: bez niejrsync
stworzyłaby/remote/directory/directory
.)źródło
--ignore-existing
dodaje bez zastępowania, jaką widzisz utratę danych?rsync
łatwo dostępny .... (jak Win32-OpenSSH)--rsync-path
potrzebny jest pakiet innej firmy )scp nadpisze pliki, jeśli masz do nich uprawnienia do zapisu.
Innymi słowy: Możesz
scp
skutecznie pominąć wspomniane pliki, tymczasowo usuwając na nich uprawnienia do zapisu (jeśli jesteś właścicielem plików).źródło
scp -r [email protected]:/location/of/files/* /local/location/
Możesz skopiować tylko nowe pliki według daty. Posługiwać się
find
źródło
Jeśli możesz ustawić zawartość pliku docelowego tylko do odczytu:
przed uruchomieniem
scp
(narzeka i pomija istniejące pliki).I zmień je później (
chmod +w
aby uzyskać wartość na podstawie umask). Jeśli nie wszystkie pliki mają uprawnienia do zapisu zgodnie z umask, będziesz musiał jakoś przechowywać uprawnienia, aby móc je przywrócić.(Odpowiedź Gillesa zastępuje istniejące pliki, jeśli lokalnie są one nowsze, w ten sposób straciłem cenne dane. Nie rozumiem, dlaczego ta błędna i szkodliwa odpowiedź ma tak wiele głosów).
źródło
rsync --ignore-existing
spowodowałeś utratę danych?find: missing argument to '-exec'
przy użyciu tej komendy, a zamiast tego musiał użyć:find . -type f -exec chmod a-w {} \;
. Mój Linux jest zły, ymmv.find . -type f -exec chmod a-w {} \;
Miałem podobne zadanie, w moim przypadku nie mogłem użyć
rsync
,csync
lub FUSE ponieważ mój przechowywanie ma tylko SFTP.rsync
nie można zmienić daty i godziny pliku, niektóre inne narzędzia (jakcsync
) pokazały mi inne błędy: „ Nie można utworzyć pliku tymczasowego Wykryto przesunięcie zegara ”.Jeśli masz dostęp do serwera pamięci - po prostu zainstaluj tutaj
openssh-server
lub uruchomrsync
jako demon.W moim przypadku - nie mogłem tego zrobić, a rozwiązaniem było: lftp .
lftp
wykorzystanie do synchronizacji jest poniżej:/src/folder
- jest folderem na moim komputerze,/rem/folder
- jestsftp://sft.domain.tld/rem/folder
.Możesz znaleźć strony man pod linkiem: http://lftp.yar.ru/lftp-man.html
źródło
Aby skopiować całą wiązkę plików, szybciej je tar. Używając -k zapobiegasz również zastępowaniu plików tar podczas rozpakowywania ich w systemie docelowym.
źródło
scp
nadpisuje pliki i nie ma przełącznika, aby to zrobić, ale możesz skopiować rzeczy po drodze, wykonać scp, a następnie skopiować istniejące pliki z powrotem. Przykłady:Skopiuj wszystkie istniejące pliki
Skopiuj wszystko za pomocą scp
Skopiuj oryginalne pliki na cokolwiek, co scp napisał:
źródło
Innym sposobem na osiągnięcie tego jest wykonanie
ls
w folderze docelowym:W zdalnym folderze docelowym:
U źródła:
Na miejscu:
źródło
-
>
spację nowej linii lub inne znaki specjalne. 3. Zakoduj na stałe pętlę for w skrypcie python. Generowanie programu w czasie wykonywania jest trudne i trudne (nawet jeśli jest wykonywane przez profesjonalnych programistów) z wielu powodów. Generowanie skryptu powłoki jest jeszcze gorsze - okropny pomysł.