Biorąc pod uwagę, że tar zignorował moje 2 gniazda, jak wykonać kopię zapasową, a następnie przywrócić mój folder logowania?


6

Zrobiłem kopię zapasową sieci mojego obszaru logowania, przygotowując się do ponownego sformatowania woluminu, w którym ma się uruchamiać na moim starym Power Mac G5 uruchomienie najnowszej wersji Leoparda.

Chociaż nie wierzę, że ten objaw jest funkcją rzeczywistego tar wywołanie, tutaj jest prawdziwe polecenie kompletności:

   bill@r2d2-2:~
   [108] (sudo tar cf - -C /Volumes/usr1 Users) | gzip -c - | ssh whmcclos@mbp \
             'cat > /Volumes/link2TMS/r2d2_usr1_Users.tar.gz'
   tar: Users/bill/Library/Acrobat User Data/8.0_ppc/Synchronizer/Commands: socket ignored
   tar: Users/bill/Library/Acrobat User Data/8.0_ppc/Synchronizer/Notification: socket ignored

Oto dwa pliki gniazd, które tar ignoruje

bill@r2d2:~/Library/Acrobat User Data/8.0_ppc/Synchronizer
[11] ls -larhdt *
drwx------  3 bill  staff   102B Jun  4  2010 metadata
-rw-r--r--  1 bill  staff     0B Jan 20 13:05 adobesynchronizersu80
srwxr-xr-x  1 bill  staff     0B Jan 20 13:05 Notification
srwxr-xr-x  1 bill  staff     0B Jan 20 13:05 Commands

Nie pracowałam nad tworzeniem gniazd w ciągu kilku lat i będę wiedział, co zrobić, gdy dostanę podpowiedź. Jak mówi tytuł, jak mam wykonać kopię zapasową, a następnie przywrócić te pliki, biorąc pod uwagę to tar zignorował je?

Odpowiedzi:


6

Ty nie.

Lokalne gniazda uniksowe są tworzone, gdy tylko program próbuje nasłuchiwać na podanej ścieżce dla połączeń, i pomimo tego, że są typem pliku, działają tylko jako wskaźniki do struktur w pamięci; więc są użyteczne tylko tak długo, jak długo program działa (i tylko w obrębie tego samego komputera; nie ma NFS ani niczego takiego).

Po zamknięciu programu plik gniazda nie jest już przydatny (i zwykle jest usuwany przez sam program); w rzeczywistości, jeśli program zostanie ponownie uruchomiony, to musi usunąć stare gniazdo przed odsłuchaniem na tej samej ścieżce - w przeciwnym razie otrzyma „Adres już używany” (taki sam, jak gdyby dwa programy próbowały pobrać ten sam port TCP).

To jest nieco inne od nazwanego Kobza (aka fifos), które działają w znacznie prostszy sposób (jeden proces pisze, jeden proces czyta) i dlatego są wielokrotnego użytku; nazwany potok można utworzyć za pomocą mkfifo lub mknod p … polecenia.


Naprawdę myliłem FIFO, które zaprogramowałem i użyłem, z gniazdami. Są też takie brzydkie, choć niezwykle ważne / użyteczne b (blokada) i c (znak) specjalne pliki w /dev folder, a jak sobie przypominam, także się nie psują. Dziękuję za szybką odpowiedź.
Billy McCloskey

1
@BillMcCloskey: tar może archiwizować węzły urządzeń, ale potrzebuje uprawnień roota, aby je wyodrębnić. Ale zazwyczaj możesz także pominąć wszystkie / dev, ponieważ nowoczesne systemy tworzą niezbędne węzły urządzeń podczas uruchamiania.
grawity

Cieszę się, że tworzenie plików / dev ewoluowało do większej dynamiki; myślę, że pamiętam używanie mknod w dniach mojego pierwszego slackware instalacja. Chcąc zobaczyć, na co mogę być w tym względzie, relatywnie Nowy leopard box, zrobiłem sudo tar cf - /dev > /dev/null, tylko zobaczyć tar: /dev/fd/3: Cannot stat: Bad file descriptor. Jak pamięć służy, Myślę to napęd dyskietek, o którym wiem, że brakuje mojego PPC G5, chociaż w razie potrzeby mam napęd dyskietek USB! LOL Jeszcze raz dziękujemy za twój wgląd - najbardziej pomocny.
Billy McCloskey

Tak - Linux przez jakiś czas miał „devfs” (choć był dość niezwykły); później, / dev powstał prosty tmpfs, w którym demon udev utworzył wszystkie węzły urządzeń ze zdarzeń jądra; istnieje od ponad dziesięciu lat - od 1997 r. znajduję odniesienia do starej nazwy udev „kerneld”. Niedawno ponownie przeniesiono ją do jądra - / dev jest specjalnym rodzajem tmpfs, w którym samo jądro powoduje wyświetlanie węzłów urządzeń (w znacznie prostszy niż devfs) i udev dostosowuje tylko tryby / własność / dowiązania symboliczne. Nie wiem o OS X, ale zakładam, że on także używa dynamicznego / dev, może jak devd w innych BSD.
grawity

Jeśli chodzi o katalog / dev / fd /, to nie jest to napęd dyskietek - zawiera specjalne pliki odpowiadające własnym deskryptorom plików programu. Na przykład otwarcie / dev / fd / 2 (lub dowiązanie symboliczne / dev / stderr) jest równoważne wywołaniu dup(2). Ogólnie rzecz biorąc, dobrym pomysłem jest nakazanie narzędziom kopii zapasowych, aby całkowicie zignorowały / dev lub nigdy nie przekraczały punktów montowania systemu plików (zakładając / dev jest punkt montowania), ponieważ bezużyteczne jest tworzenie kopii zapasowych / dev lub wirtualnych systemów plików, takich jak Linux / proc i / sys lub FreeBSD / kern.
grawity
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.