zmień katalog na dysk sieciowy w Cygwin

10

W domu mam nowy router bezprzewodowy i mam do niego podłączony dysk 3 TB. Chciałbym napisać skrypt cygwin, który skopiuje zmienione pliki na zewnętrzny HD.

Na początek, jak przejść cdna dysk twardy? W Eksploratorze plików systemu Windows po prostu piszę //192.168.1.1i zabiera mnie na dysk sieciowy. Jednak po cd //192.168.1.1wpisaniu nie działa. Jak mogę zmienić katalog na HD?

Po drugie, czy ktoś ma porady, jak napisać dobry skrypt kopii zapasowej, aby skopiować niektóre katalogi (rekurencyjnie), jeśli uległy zmianie?

drjrm3
źródło

Odpowiedzi:

15

Możesz spojrzeć na zamontowane dyski w widoku środowiska cygwin UNIX na podstawowy system operacyjny Windows, patrząc /cygdrive. Wykonaj dfpolecenie w powłoce cygwin (zwykle bash), aby zobaczyć, gdzie zamontowane są dyski. Oto dokumentacja, gdzie można znaleźć zamontowane dyski . Na przykład, aby przejść na dysk sieciowy zamontowany jako Windows f:\, cdnależy /cygdrive/f:

$ cd /cydrive/f

Oto przykład:

  1. OS X Mavericks (UNIX) ma zamontowany dysk o pojemności 3 TB jako /Volumes/Time Machine
  2. Wirtualny system Windows XP (VM) działa w systemie OS X i widzi /Volumes/Time MachinejakoX:\
  3. Cygwin działa na maszynie wirtualnej XP i widzi /Volumes/Time Machinejako, /cygdrive/xa nawetx:

$ ls x:

Oto zdjęcie:

wprowadź opis zdjęcia tutaj

Jeśli zewnętrzny HD nie jest obecnie zamontowany na hoście Windows i jest już zmapowany do punktu montowania w /cygdrive, może być konieczne samodzielne zamontowanie udziału sieciowego. Spójrz na implementację mountpolecenia UNIX przez cygwin .

Inny sposób przeglądania folderu sieciowego jest zgodny z zastosowaną składnią - mój serwer OS X eksportuje mój folder logowania OS X, whmcclos, jako folder współdzielony SMB. Mogę ustawić mój bieżący katalog roboczy na ten folder współdzielony z cygwin na mojej maszynie wirtualnej z systemem Windows XP, działającej w systemie OS X, w następujący sposób:

$ cd //192.168.0.2/whmcclos

W ten sposób nie muszę nawet instalować folderu jako litery dysku, aby wyświetlić go z poziomu programu cygwin.

W przypadku tworzenia kopii zapasowych plików, które uległy zmianie, rsyncbędzie rekurencyjnie tworzyć kopie zapasowe tylko tych plików w drzewie katalogów, które uległy zmianie - oblicza minimalny zestaw kopii zapasowych, tworzy tylko kopie zapasowe zmian i ma mnóstwo opcji, w tym kopiowanie na dyski sieciowe i bycie może być używany z szyfrowaniem przez ssh. Oto kilka wskazówek dotyczących korzystania rsyncz Cygwina. Oto polecenie kompresji i archiwizacji (rekurencji) źródła na dysku zamontowanym jako c:\ i umieszczone w celu na dysku zamontowanym jak f:\na hoście Windows leżącym u podstaw programu cygwin.

$ rsync -avz /cygdrive/c/path/to/source /cygdrive/f/path/to/target

Jeśli potrzebujesz dalszej pomocy, zostaw komentarz.

Billy McCloskey
źródło
Dzięki, wciąż mam pytanie - kiedy użyłem -avz, nie poprawnie kopiuje uprawnień. I dostać rsync: failed to set permissions on "<path>": Permission denied (13). Masz pomysł, jak to naprawić?
drjrm3
Brzmi jak coś, co widziałem kiedyś z uprawnieniami, szczególnie z uprawnieniami ACL. Sprawdź uprawnienia, w tym listę ACL, /bin/ls -le /path/to/sourcea także /bin/ls -le /path/to/targetsprawdź nie tylko różne uprawnienia do folderów, ale także uprawnienia ACL i do tych folderów. Zobacz man lsi -leprzełączniki oraz man chmodi +ai -aprzełączniki. Jestem w 99% pewien, że ma to coś wspólnego z uprawnieniami. Zacznij od rsynchronizacji podzbioru drzewa źródłowego, aby powiedzieć, /tmpgdzie wiesz, że masz uprawnienia do zapisu i zobacz, jak to działa.
Billy McCloskey