Una cartella con due posizioni diverse su Ubuntu 18.04


10

Voglio avere la stessa cartella in due posizioni diverse nel mio Ubuntu. Se aggiorno qualcosa in uno, dovrebbe anche essere aggiornato nell'altra posizione.

Come posso farlo accadere?


8
queste 2 posizioni devono essere fisiche (come in 2x occupare spazio) o possono essere collegamenti?
Rinzwind,

19
A symbolic linkè la soluzione più semplice alle tue esigenze e non dipende dai privilegi di superutente. man lnper maggiori informazioni.
doneal24,

Risposte:


16

Usa attacchi di associazione .

Supponiamo che tu abbia una directory esistente /home/pandey/originale desideri eseguirne il mirroring in /home/pandey/mirrormodo che tutto ciò che fai in una di esse sia fatto automaticamente anche nell'altra.

Ciò non richiede alcuna sincronizzazione o copia tra le due directory. Un bind mount è solo un'altra vista della directory originale e ciò che accade in uno accade anche nell'altro.

  1. Crea (come tuo utente) la nuova directory /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. bind-mount della directory originale sul percorso appena creato. Ciò richiede l'accesso come root:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. Godere.

Per annullare questo, semplicemente

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

Vedi anche questa domanda e la sua eccezionale risposta personale su stackexchange sui bind-mount .


3
+1, questo modo è sicuramente più veloce di quello che ho proposto;
Codito ergo sum,

13
Avrebbe cd /home/pandey; ln -s original mirrorlo stesso effetto e non richiederebbe i diritti sudo?
doneal24,

19
Sì, mi chiedo perché la gente stia proponendo queste soluzioni rotonde mentre suona come un caso d'uso classico per un semplice link sym. Qual è il vantaggio? Per quanto posso vedere nessuno dei vantaggi elencati nella domanda di riferimento sembra applicarsi qui.
Voo,

5
@ doneal24 Sono d'accordo: il collegamento simbolico ha lo stesso effetto da un punto di vista pratico e non richiede modifiche sostanziali al sistema e privilegi di amministratore.
vanadio,

2
La domanda collegata sui mount bind ha una bella lista di possibili casi d'uso. Il solo bisogno di un altro percorso denominato in una directory non è uno di questi.
Dubu,

44

Come sottolineato nei commenti ma non come risposta corretta:

In molti casi, un collegamento simbolico è la soluzione più semplice.

Puoi crearli facilmente dalla riga di comando (usando il lncomando con -sparametro). Puoi crearli facilmente anche utilizzando una GUI: la maggior parte dei browser di file (nautilus, ...) ti consente di creare un collegamento simbolico usando il trascinamento della selezione (come per spostare un file) mentre tieni premuto un tasto modificatore (CTRL + MAIUSC).

Esempio per l'utilizzo dalla riga di comando:

$ 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

2

Puoi farlo impostando un lavoro crontab:

  • Apri il tuo terminale e digita crontab -e
  • Premere iper attivare la modalità di inserimento dell'editor vim.

È possibile immettere il comando che si desidera eseguire lì, in modo da poter copiare tutti i file della cartella in un'altra cartella. Ad esempio, se si desidera copiare tutti i file /home/user/folder_namedi /home/user/publicsi dovrebbe inserire questo comando nel crontabfile di:

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

Questo copierà tutti i file nell'intervallo desiderato. Se vuoi copiare tutti i file ogni giorno alle 21:30, la modifica dovrebbe essere:

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

Per maggiori informazioni su crontab guarda qui o usa man crontab.


Probabilmente userei i bind mount come @PerlDuck, dato che è un modo semplice e mantenibile per farlo. Non userei cronjobs poiché questo potrebbe portare a tutti i tipi di problemi di prestazioni sulla tua macchina se finissi per sincronizzare una cartella in più posizioni e i file nella prima cartella siano molto grandi o numerosi. La mia azienda sta usando questo approccio per emulare il comportamento di Dropbox / Drive e ora che abbiamo raggiunto un gran numero di file, alcuni dei quali hanno dimensioni di GB, la soluzione semplicemente non si ridimensiona più.
modificabile

2
Sono due directory, non una.
rabbia
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.