Jeden folder mający dwie różne lokalizacje w systemie Ubuntu 18.04

10

Chcę mieć ten sam folder w dwóch różnych lokalizacjach na moim Ubuntu. Jeśli coś zaktualizuję w jednym, powinien on również zostać zaktualizowany w innej lokalizacji.

Jak mogę to zrobić?

Aman Pandey
źródło
8
czy te 2 lokalizacje muszą być fizyczne (jak w przypadku 2x zajmującej miejsce) czy mogą być linkami?
Rinzwind
19
Jest symbolic linkto najprostsze rozwiązanie dla twoich wymagań i nie zależy od uprawnień administratora. man lnpo więcej informacji.
doneal24

Odpowiedzi:

16

Użyj zaczepów do wiązania .

Załóżmy, że masz istniejący katalog /home/pandey/originali chcesz go skopiować , aby /home/pandey/mirrorwszystko, co robisz w jednym z nich, odbywa się automatycznie również w drugim.

Nie wymaga to synchronizacji ani kopiowania między dwoma katalogami. Wiążą zamontować tylko kolejny widok do oryginalnego katalogu i co się dzieje, dzieje się również w jednej w drugą.

  1. Utwórz (jako użytkownik) nowy katalog /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. bind-mount oryginalny katalog do nowo utworzonej ścieżki. Wymaga to dostępu do konta root:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. Cieszyć się.

Aby to cofnąć, po prostu

sudo umount /home/pandey/mirror
rmdir /home/pandey/mirror

Zobacz także to pytanie i jego wybitną odpowiedź na komendę stackexchange na temat podłączania opraw .

PerlDuck
źródło
3
+1, na pewno ten sposób jest szybszy niż ten, który zaproponowałem;
Codito ergo sum
13
Czy cd /home/pandey; ln -s original mirrormiałby taki sam efekt i nie wymagałby uprawnień sudo?
doneal24
19
Tak, zastanawiam się, dlaczego ludzie proponują te rozwiązania ronda, podczas gdy brzmi to jak klasyczny przypadek użycia prostego łącza sym. Jaka jest zaleta? Z tego, co widzę, wydaje się, że żadna z zalet wymienionych w pytaniu, o którym mowa, nie ma tutaj zastosowania.
Voo
5
@ doneal24 Zgadzam się: dowiązanie symboliczne ma ten sam efekt z praktycznego punktu widzenia i nie wymaga fundamentalnych zmian systemowych ani uprawnień administratora.
wanad
2
Połączone pytanie dotyczące opraw montowania ma ładną listę możliwych przypadków użycia. Potrzebowanie innej nazwanej ścieżki do katalogu nie jest jedną z nich.
Dubu,
44

Jak wskazano w komentarzach, ale nie jako poprawna odpowiedź:

W wielu przypadkach łącze symboliczne jest najłatwiejszym rozwiązaniem.

Możesz je łatwo utworzyć w wierszu poleceń (używając lnpolecenia z -sparametrem). Możesz je również łatwo utworzyć za pomocą GUI: Większość przeglądarek plików (nautilus, ...) pozwala ci utworzyć dowiązanie symboliczne za pomocą przeciągania i upuszczania (np. Do przenoszenia pliku), przytrzymując klawisz modyfikujący (CTRL + SHIFT).

Przykład użycia wiersza poleceń:

$ mkdir first_dir
$ ln -s ./first_dir ./second_dir
$ ls 
first_dir  second_dir

$ touch ./first_dir/test_1
$ touch ./second_dir/test_2

$ ls ./first_dir 
test_1  test_2

$ ls ./second_dir
test_1  test_2
mnagel
źródło
2

Możesz to zrobić, ustawiając zadanie crontab:

  • Otwórz terminal i wpisz crontab -e
  • Naciśnij i, aby aktywować tryb wstawiania edytora vim.

Możesz wprowadzić polecenie, które chcesz tam wykonać, aby skopiować wszystkie pliki z folderu do innego folderu. Na przykład, jeśli chcesz skopiować wszystkie pliki w /home/user/folder_namecelu /home/user/publicnależy wstawić to polecenie w crontabpliku:

rsync /home/user/folder_name -r /home/user/public

Spowoduje to skopiowanie wszystkich plików w żądanym przedziale. Jeśli chcesz kopiować wszystkie pliki codziennie o 21:30, edycja powinna wyglądać następująco:

 30 21 * * *  rsync /home/user/folder_name -r /home/user/public

Aby uzyskać więcej informacji o crontab, spójrz tutaj lub użyj man crontab.

Codito ergo sum
źródło
Prawdopodobnie użyłbym bind mountów jako @PerlDuck, ponieważ jest to łatwy i łatwy do utrzymania sposób. Nie użyłbym cronjobs, ponieważ może to prowadzić do różnego rodzaju problemów z wydajnością na twoim komputerze, jeśli skończysz synchronizowanie folderu w wielu lokalizacjach, a pliki w pierwszym folderze są bardzo duże lub liczne. Moja firma stosuje to podejście do emulowania zachowania Dropbox / Drive, a teraz, gdy osiągnęliśmy dużą liczbę plików, niektóre z nich mają rozmiar GB, rozwiązanie po prostu nie skaluje się.
nieokreślony
2
To są dwa katalogi, a nie jeden.
wściekłość