• rsync e link simbolici

    From Davide Prina@21:1/5 to All on Tue Feb 14 21:10:01 2023
    È possibile far sì che rsync lasci i link simbolici se puntano a
    file o directory nel ramo che sta copiando, ma li trasformi in file e
    directory se sono esterni?

    Es di struttura ad albero dei miei file/directory:
    file.esterno
    dir1
    |
    |- file1dir1
    |- fiel2dir1
    |- dir2
    |
    |- file1dir2 -> ../file1.dir1
    |- file2dir2 -> ../../file.esterno

    in pratica se copio con rsync dir1 da un'altra parte vorrei avere che file2.dir2 deve essere sostituito con il contenuto di file.esterno,
    mentre il link simbolico di file1dir2 deve rimanere poiché sto anche
    copiando file1dir1

    se invece faccio rsync di dir2, allora entrambi devono essere sostituiti
    con il contenuto dei rispettivi file a cui puntano

    Guardando le opzioni mi sembra di capire che posso arrivare ad avere o trasformazioni complete in file normali o preservazione di tutti i link simbolici... in più vi sono le opzioni safe/unsave-links, ma non mi sembra facciano quanto voglio io.

    Perché chiedo questo? Perché ho fatto un semplice script per farmi i
    backup con rsync e in alcuni casi ho creato dei link simbolici ai file a
    cui voglio fare il backup (senza dover fare il backup anche di altre cose
    di cui non mi serve averne una copia), ma ho alcuni casi in cui ho dei link simbolici che vorrei mantenere perché faccio il backup anche di quello
    puntato dal link.

    Perché mi sono fatto uno script e non ho usato uno dei mille programmi di backup/restore esistenti?
    Perché mi sono preso due HD esterni (ho preso delle offerte, anche se ultrasovradimensionati rispetto alla dimensione dei mie dati) e voglio
    fare il backup in automatico di dati che ho sul mio PC e che qui mantengo,
    ma per alcuni dati che occupano più spazio, ma di cui non voglio mantenere
    una copia sul PC (es: videoregistrazione corsi e materiale dei corsi) li
    copio a mano su uno degli HD cancellandoli dall'HD. Quando collego entrambi
    gli HD oltre a farmi il backup su entrambi di quello che ho sul PC viene sincronizzato tra i due anche i file copiati a mano su uno dei due.
    In realtà ho fatto uno script generico dove gli HD possono essere N e le directory di origine e destinazione sia per i file da prelevare dal PC che
    per quelli da sincronizzare sugli HD sono configurabili.
    In questo modo posso fare normalmente il backup su uno solo degli HD a caso
    e solo poche volte l'anno faccio la sincronizzazione su tutti.

    Ciao
    Davide

    --
    La mia privacy non è affar tuo
    https://noyb.eu/it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alessandro Rubini@21:1/5 to All on Tue Feb 14 23:20:01 2023
    E` possibile far si` che rsync lasci i link simbolici se puntano a
    file o directory nel ramo che sta copiando, ma li trasformi in file e directory se sono esterni?

    Spero di no. Fossi io il manutentore di rsync rifiuterei una patch
    in tal senso. Se un file e` importante e voglio farne il backup,
    lo conservo nel posto importante, e al limite il link simbolico lo
    faccio da fuori. O tutti o nessuno, il resto e` arbitrario e` poco
    affidabile.

    Per il resto sono d'accordo ad usare rsync per il backup. Saro`
    vecchio, ma i tanti strumenti troppo complessi e "faccio tutto io " mi spaventano. Troppi programmi scompaiono in pochi anni: se devo
    affidarci il mio lavoro, prendo uno strumento semplice e solido che
    promette di durare nel tempo.

    In particolare, rsync con i link fisici e` comodissimo. Ogni
    giorno copio /home, ma se un file e` uguale al precedente backup
    viene fatto un link fisico, Questo il mio disco di backup attuale:

    home/ home-211210/ home-220730/ home-230105/ home-230125/
    home-150201/ home-220110/ home-220810/ home-230106/ home-230126/
    home-160210/ home-220120/ home-220820/ home-230107/ home-230127/
    home-170210/ home-220130/ home-220830/ home-230108/ home-230128/
    home-180210/ home-220210/ home-220910/ home-230109/ home-230129/
    home-190210/ home-220220/ home-220920/ home-230110/ home-230130/
    home-200210/ home-220310/ home-220930/ home-230111/ home-230131/
    home-201010/ home-220320/ home-221010/ home-230112/ home-230201/
    home-201110/ home-220330/ home-221020/ home-230113/ home-230202/
    home-201210/ home-220410/ home-221030/ home-230114/ home-230203/
    home-210110/ home-220420/ home-221110/ home-230115/ home-230204/
    home-210210/ home-220430/ home-221120/ home-230116/ home-230205/
    home-210310/ home-220510/ home-221130/ home-230117/ home-230206/
    home-210410/ home-220520/ home-221210/ home-230118/ home-230207/
    home-210510/ home-220530/ home-221220/ home-230119/ home-230208/
    home-210710/ home-220610/ home-221230/ home-230120/ home-230209/
    home-210810/ home-220620/ home-230101/ home-230121/ home-230210/
    home-210910/ home-220630/ home-230102/ home-230122/ home-230211/
    home-211010/ home-220710/ home-230103/ home-230123/ home-230212/
    home-211110/ home-220720/ home-230104/ home-230124/ home-yesterday/

    E questo file, per esempio, non cambia da tempo, ha 72 link fisici:

    arcana% ls -l home/rubini/.inputrc
    -rw-rw-r-- 72 rubini staff 134 Apr 3 2022 home/rubini/.inputrc

    Alla fine ogni copia oltre la prima costa molto poco in spazio su disco,
    poi dipende da come si usa il disco.

    arcana% du -s home home-yesterday
    48315512 home
    4689680 home-yesterday

    Lo script, in cron, usa "--link-dest":

    days2=$(/root/yesterday -2)
    mv $D/home-yesterday $D/home-$days2
    mv $D/home $D/home-yesterday
    rsync -av --link-dest=$D/home-yesterday /home/ $D/home

    Dove "yesterday -2" ritorna la data di due giorni fa. L'ho fatto
    il millennio scorso ed e` in C, oggi lo farei in /bin/sh tipo:

    delta=2 # o da commandline
    deltasec=$(expr $delta \* 24 \* 60 \* 60)
    date +%y%m%d --date=@$(expr $(date +%s) - $deltasec)

    Poi vanno cancellate le /home-* vecchie, ma anche questo si automatizza facilmente: se quella di 30 giorni fa non finisce per zero cancellala,
    se quella di 300 giorni fa non finisce per "10" cancellala, cose
    cosi`.

    Non mi aspetto che altri seguano il mio metodo, ma spero le informazioni associate siano utili a qualcuno.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Piviul@21:1/5 to All on Wed Feb 15 10:00:01 2023
    Il 14/02/23 21:07, Davide Prina ha scritto:
    È possibile far sì che rsync lasci i link simbolici se puntano a
    file o directory nel ramo che sta copiando, ma li trasformi in file e directory se sono esterni?

    Es di struttura ad albero dei miei file/directory:
    file.esterno
    dir1
    |
    |- file1dir1
    |- fiel2dir1
    |- dir2
    |
    |- file1dir2 -> ../file1.dir1
    |- file2dir2 -> ../../file.esterno

    in pratica se copio con rsync dir1 da un'altra parte vorrei avere che file2.dir2 deve essere sostituito con il contenuto di file.esterno,
    mentre il link simbolico di file1dir2 deve rimanere poiché sto anche copiando file1dir1

    se invece faccio rsync di dir2, allora entrambi devono essere sostituiti
    con il contenuto dei rispettivi file a cui puntano
    Perché non fai hard link per i file "esterni"?

    Piviul

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Davide Prina@21:1/5 to All on Wed Feb 15 21:50:01 2023
    Alessandro Rubini ha scritto:

    Davide Prina ha scritto:

    E` possibile far si` che rsync lasci i link simbolici se puntano a
    file o directory nel ramo che sta copiando, ma li trasformi in file e
    directory se sono esterni?

    Spero di no. Fossi io il manutentore di rsync rifiuterei una patch
    in tal senso.

    non chiedevo certo una patch, volevo capire se era possibile con i comandi attuali fare qualcosa del genere

    Se un file e` importante e voglio farne il backup,
    lo conservo nel posto importante, e al limite il link simbolico lo
    faccio da fuori.

    sì, in effetti potrei invertire sorgente <-> destinazione di questi link simbolici, in modo che il backup venga fatto sul file effettivo, quando
    voglio avere tale comportamento... e far sì che rsync copy sempre i link simbolici quando li trova, negli altri casi.
    Devo vedere se questa soluzione è applicabile in tutti i casi.

    Ciao
    Davide

    --
    La mia privacy non è affar tuo
    https://noyb.eu/it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Davide Prina@21:1/5 to All on Wed Feb 15 22:00:01 2023
    Piviul ha scritto:

    Davide Prina ha scritto:

    È possibile far sì che rsync lasci i link simbolici se puntano a
    file o directory nel ramo che sta copiando, ma li trasformi in file e
    directory se sono esterni?

    Perché non fai hard link per i file "esterni"?

    non ci avevo pensato, ho sempre preferito non usarli... se non erro non
    li puoi fare sulle directory, ma solo sui file.

    Penso che la soluzione migliore sia invertire il senso del link simbolico
    come indicato nell'altra risposta.

    Ciao
    Davide

    --
    La mia privacy non è affar tuo
    https://noyb.eu/it

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)