rsync con output personalizzato

Installazione, configurazione e uso di programmi e strumenti.
Scrivi risposta
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

rsync con output personalizzato

Messaggio da london3 »

Codice: Seleziona tutto

$ rsync -nai --log-file rsync.log a/ b/
created directory b
cd+++++++++ ./
>f+++++++++ file1
>f+++++++++ file2
>f+++++++++ file3

$ cat rsync.log
2023/05/03 08:34:17 [6130] building file list
2023/05/03 08:34:17 [6130] created directory b
2023/05/03 08:34:17 [6130] cd+++++++++ ./
2023/05/03 08:34:17 [6130] sent 116 bytes  received 57 bytes  total size 0
Però vorrei che all'inizio dell'output e all'inizio del file di log (rsync.log), vengano indicate le directory di origine e destinazione.

Ad esempio

Codice: Seleziona tutto

SINCRONIZZAZIONE a/ -> b/
Esempio completo

Codice: Seleziona tutto

$ rsync -nai --log-file rsync.log a/ b/
SINCRONIZZAZIONE a/ -> b/
created directory b
cd+++++++++ ./
>f+++++++++ file1
>f+++++++++ file2
>f+++++++++ file3

$ cat rsync.log
SINCRONIZZAZIONE a/ -> b/
2023/05/03 08:34:17 [6130] building file list
2023/05/03 08:34:17 [6130] created directory b
2023/05/03 08:34:17 [6130] cd+++++++++ ./
2023/05/03 08:34:17 [6130] sent 116 bytes  received 57 bytes  total size 0
Intuitivamente ho fatto questa prova

Codice: Seleziona tutto

$ rsync --template "SINCRONIZZAZIONE {SRC} -> {DEST}\n{OUTPUT}" [...]
rsync: --template: unknown option
rsync error: syntax or usage error (code 1) at main.c(1795) [client=3.2.7]
ma come vedete, il mio intuito, non mi è stato molto utile :)
Computer: Lenovo ThinkPad L480
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: rsync con output personalizzato

Messaggio da london3 »

UPPPPP
Computer: Lenovo ThinkPad L480
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: rsync con output personalizzato

Messaggio da rai »

Per cambiare il comportamento di rsync devi scrivere una patch e ricompilarlo.

Oppure per avere un header all'inizio dell'output di rsync puoi scrivere un wrapper intorno a rsync che dia in output prima l'header, poi stdout|stderr di rsync. Per usarlo crei un alias di nome rsync che lancia il tuo script-wrapper.
Hai bisogno di uno script che supporta opzioni lunghe e corte e permette parametri obbligatori e facoltativi, tutte cose che fa la riga di comando di rsync
Potresti usare Python con argparse. Oppure usare bash con getopt.
Comunque non la vedo facilissima come cosa, se uno volesse mantenere la grande elasticità di opzioni e di parametri che offre rsync.

Anche per avere un header a inizio file.log il metodo mi pare lo stesso. Bisogna solo decidere programmaticamente quando bisogna ritenere finito il precedente file.log e iniziarne un altro.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: rsync con output personalizzato

Messaggio da Lucio C »

Uso molto spesso rsync ma per allineamenti estemporanei (con un alias rsync -azHx -vv), tra casa e lavoro, o tra una macchina di sviluppo e una di produzione al lavoero, ma non ho mai tenuto un log file ... o almeno credo, forse loggavo qualcosa piu' di 15 anni fa quando facevo un sync da crontab col Cile. In ogni caso my farei un wrapperino del tipo

Codice: Seleziona tutto

echo "origin" $1 "destination" $2  >! my.log
echo -n "starting at " >> my.log
date >> my.log
rsync ...options... $1 $2 >> my.log
echo -n "ended at " >> my.log
date >> my.log
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: rsync con output personalizzato

Messaggio da london3 »

Per cambiare il comportamento di rsync devi scrivere una patch e ricompilarlo.
È una cosa alla portata di tutti che si può fare in poco tempo?
Anche per avere un header a inizio file.log il metodo mi pare lo stesso. Bisogna solo decidere programmaticamente quando bisogna ritenere finito il precedente file.log e iniziarne un altro.
Non ho capito

Codice: Seleziona tutto

echo "origin" $1 "destination" $2  >! my.log
Cosa significa >!?
Computer: Lenovo ThinkPad L480
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: rsync con output personalizzato

Messaggio da Lucio C »

london3 ha scritto:
martedì 16 maggio 2023, 9:13
Non ho capito

Codice: Seleziona tutto

echo "origin" $1 "destination" $2  >! my.log
Cosa significa >!?
Significa "redirigi l'output (>) sovrascrivendo (!) sul file my.log se gia' esiste" (scusate ma io uso (t)csh, magari altri shell non usano tale sintassi ?).
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: rsync con output personalizzato

Messaggio da rai »

È una cosa alla portata di tutti che si può fare in poco tempo?

No, io per esempio non so farlo, quindi ci metterei un sacco di tempo, dovendo prima imparare
Non ho capito
Come dovrebbe fare lo script a sapere che sta scrivendo su un nuovo file?
Serve un criterio oggettivo (cronologico? numero di esecuzioni? peso del file? etc) da verificare ogni volta prima dell'esecuzione della copia in modo da decidere se accodare il log al file esistente o se scriverlo su un file nuovo, e solo in quest'ultimo caso preporgli l'header voluto
Cosa significa >!?
typo? o forse è il solito bias di Lucio C che posta sul forum di ubuntu esempi funzionanti su una shell differente
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2855
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: rsync con output personalizzato

Messaggio da DoctorStrange »

Anche a me piacerebbe imparare a sviluppare customizzazioni per rsync. Su internet ho trovato pochi riferimenti. Sarebbe utile se qualcuno avesse qualche tutorial o guida. Si sviluppa in C, per i plugin di rsync?
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: rsync con output personalizzato

Messaggio da london3 »

Lucio C ha scritto:
martedì 16 maggio 2023, 11:08
Significa "redirigi l'output (>) sovrascrivendo (!) sul file my.log se gia' esiste" (scusate ma io uso (t)csh, magari altri shell non usano tale sintassi ?).
A me mi crea il file !
Computer: Lenovo ThinkPad L480
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2842
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: rsync con output personalizzato

Messaggio da rai »

DoctorStrange ha scritto:
martedì 16 maggio 2023, 11:44
Anche a me piacerebbe imparare a sviluppare customizzazioni per rsync. Su internet ho trovato pochi riferimenti. Sarebbe utile se qualcuno avesse qualche tutorial o guida. Si sviluppa in C, per i plugin di rsync?
Puoi prendere esempio dal mondo reale: https://github.com/WayneD/rsync-patches
Forse anche questo può servirti: https://rsync.samba.org/
london3 ha scritto:
martedì 16 maggio 2023, 13:30
Lucio C ha scritto:
martedì 16 maggio 2023, 11:08
Significa "redirigi l'output (>) sovrascrivendo (!) sul file my.log se gia' esiste" (scusate ma io uso (t)csh, magari altri shell non usano tale sintassi ?).
A me mi crea il file !
Ok che Lucio C ha questo vizietto, però anche tu non ti aiuti! hai letto la sua risposta? quella sintassi non è per bash
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 363
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: rsync con output personalizzato

Messaggio da Lucio C »

Che ciascuno conosca (almeno) il proprio shell, leggendone la manpage (o legga piu' man page e scelga quello che piu' gli piace ... io ai lontani tempi di SunOS ho scelto csh).
Le sintassi possono essere diverse, ma i concetti sono sempre quelli (redirezione di stdout in un file nuovo, redirezione di stdout sovrascrivendo un file esistente, redirezione di stdout appendenendo a un file esistente, redirezione di stdout e stderr se possibile, redirezione da stdin, redirezione da here document ....).
Incidentalmente, chiunque puo' usare qualsiasi shell (sia cambiandolo permanentemente in /etc/passwd con chsh, sia invocandone uno direttamente, sia facendo girare uno script in un altro shell usando l'opportuna shebang ... quella cosa che comincia con #!/bin/qualcosa ... si possono persino scrivere script in awk, perl o altri interpreti non normalmente considerati shell).

In ogni caso un task come prefissare una breve descrizione a un log file e' ideale per uno scriptino ... andare a ricompilare rsync dai sorgenti patchandoli e' come usare un cannone per ammazzare una mosca, o una bomba atomica)
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: rsync con output personalizzato

Messaggio da london3 »

Ok che Lucio C ha questo vizietto, però anche tu non ti aiuti! hai letto la sua risposta? quella sintassi non è per bash
Chiedo venia, anch'io avrei dovuto precisarlo

Codice: Seleziona tutto

$ bash --version 
GNU bash, versione 5.1.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2020 Free Software Foundation, Inc.
Licenza GPLv3+: GNU GPL versione 3 o successiva <http://gnu.org/licenses/gpl.html>

Questo è software libero; sei libero di cambiare e ridistribuirlo.
NON esiste alcuna GARANZIA, nella misura consentita dalla legge.
Computer: Lenovo ThinkPad L480
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 24 ospiti