Newsgroup: it.comp.os.linux.iniziare
Titolo: rsync: "aggiornare" dir locale risparmiando banda

Tempo fa mi sono dedicato ad installare una slackware 12.0
minimale anche per evitarmi di scaricare tutto il cd1.
Avevo usato rsync e avevo copiato in locale la directory remota
contenente il sistema comprendendo solamente le dir e i files che
mi sono stati necessari per masterizzare una iso funzionante.
Insatallata la 12.0 e messa un po' a punto, mi sono bloccato dopo
alcuni inghippi con la ricompilazione di un kernel più recente di
quello di default.
Ora che è uscita la 12.1 vorrei rimpiazzare la 12.0 in fase di
messa appunto, ripartendo dalla 12.1 tanto per restare un po' più
aggiornato.
Ora il punto è questo:
- vorrei usare rsync per aggiornare la dir locale della 12.0 con
  la dir remota della 12.1.
- Perchè?
  Bè perchè avendo una connessione messa male vorrei minimizzare
  il volume di traffico dati necessario e allo stesso tempo
  ridurre i tempi.
- L-idea sarebbe l'ipotesi che nella directory remota della 12.1
  ci sia un certo numero di files uguali aquelli della 12.0.
  Se così fosse allora probabilmente molti di quei files li ho
  già in locale e non sarebbe necessario riscaricarli.
  Cosa ne pensate? Ci può stare?
rsync viene lanciato con il comandoseguente:
rsync -avz --delete --delete-after --progress -h \
      --files-from=/path/to/etc/.rsync.onfly.sh.conf/LIST.TXT \
      --bwlimit=15 \
      rsync://
slackware.osuosl.org/slackware/slackware-12.0/
 \
      /path/to/slackware-12.0/
In pratica costruisco una lista dei file da scaricare (viene
costruita con uno script...va bè) del tipo:
...
slackware/ap/diffutils-2.8.1-i486-3.tgz
slackware/d/binutils-2.17.50.0.17-i486-1.tgz
slackware/d/gcc-4.1.2-i486-1.tgz
slackware/d/make-3.81-i486-1.tgz
slackware/l/glibc-2.5-i486-4.tgz
slackware/l/ncurses-5.6-i486-2.tgz
...
In pratica contiene tutti i files e i pacchetti necessari
all'installazione del sistema ecc. comprensivi del loro percorso
remoto ad esempio un file sopra ha un percorso remoto del tipo:
rsync://
slackware.osuosl.org/slackware/slackware-12.0/
--->                                   slackware/ap/diffutils-...
Grazie alle opzioni --delete dovrebbe essere in grado di
canellare i file locali che non vengono trovati sulla sorgente
remota.
Ora la mia domanda è questa:
Posso risparmiare un po' di banda se costruisco una nuova lista
LIST.TXT contenente i files corrispondenti della 12.1, e
lanciando il tutto più o meno così:
cp /path/to/slackware-12.0 /path/to/slackware-12.1
rsync -avz --delete --delete-after --progress -h \
      --files-from=/path/to/etc/.rsync.onfly.sh.conf/LIST.TXT \
      --bwlimit=15 \
      rsync://
slackware.osuosl.org/slackware/slackware-12.1/
 \
      /path/to/slackware-12.1/
Dovrebbe funzionare giusto?
Cioè alla fine dovrei essere in grado di avere una directory da
cui creare un'immagine masterizzabile e funzionante non vi pare?
E inoltre magari qualche file potrebbe venire non riscaricato
risarmiando qualcosa...
Il rischio è che non so di preciso come funzioni rsync e non
vorrei facesse confusione tra file remoti e locali cosa ne dite?
____________________________________
Mail: johnnynews at vfemail dot net

   ridurre i tempi.
Considera che i pacchetti che hai sarebbero comunque riscaricati tutti,
perche' e' cambiata la libc e altre cose. Non e' detto che quelli della 12
non funzionino, ma solo per il fatto che sono stati ricompilati rsync te li
riscarirebbe comunque tutti.
Se hai problemi di connessione ti converrebbe imho approfittare del dvd di
LinuxPro, cosi' ti ritrovi la distro completa e dedici cosa installare o
meno.
-- 
Ciao.
Alessandro 
"Ubuntu" - an African word, meaning "Slackware is too hard for me".

 Dovrebbe funzionare giusto?
Il download è completato ieri sera tardi.
Ma mi accorgo che nela dir locale i pacchetti presenti all'inizio
che mi aspettavo venissero cancellati perchè non presenti nella
dir remota, bè sono a ncora tutti lì.
Così ora ho una directory con pacchetti della 12.0 e pacchetti
della 12.1...lo vedo per esempio da alcune versioni più recenti
dello stesso pacchetto:
ad esempio:
kernel-huge-smp-2.6.21.5_smp-i686-2.tgz
kernel-huge-smp-2.6.21.5_smp-i686-2.tgz.asc
kernel-huge-smp-2.6.21.5_smp-i686-2.txt
kernel-huge-smp-2.6.24.5_smp-i686-2.tgz
kernel-huge-smp-2.6.24.5_smp-i686-2.tgz.asc
kernel-huge-smp-2.6.24.5_smp-i686-2.txt
kernel-modules-smp-2.6.21.5_smp-i686-2.tgz
kernel-modules-smp-2.6.21.5_smp-i686-2.tgz.asc
kernel-modules-smp-2.6.21.5_smp-i686-2.txt
kernel-modules-smp-2.6.24.5_smp-i686-2.tgz
kernel-modules-smp-2.6.24.5_smp-i686-2.tgz.asc
kernel-modules-smp-2.6.24.5_smp-i686-2.txt
Come vedete nella stessa dir (quella locale su cui dovrebbe
basarsi la ISO) convivono sia il kernel della 12 che c'era già in
partenza prima di lanciare rsync che il kernel della 12.1
scaricato dal mirror remoto della 12.1.
Perchè?
Io pensavo che l'opzione --delete servisse proprio perchè i file
locali non presenti in remoto venissero cancellati.
Invece a quanto pare ci sono tutti.
Ora avrei due domande.
1- cosa non ha funzionato in rsync rispetto a quanto mi
aspettavo? Dove ho sbagliato?
2- Adesso posso crearmi una directory con solo i file della 12.1
partendo invece che da quella remota, dalla locale di cui sopra?
Grazie in anticipo per l'attenzione.


 partendo invece che da quella remota, dalla locale di cui sopra?
Vorrei riproporre questa questione, vi rimando ai post precedenti
della discussione.
In particolare il punto 2:
Era meglio se utilizzavo come directory remota quela del mirror e
come locale una vuota....almeno non avrei avuto dubbi e comunque
temo che non sia valso a nulla in termini di risparmio di banda.
Come d'altra parte mi era stato consigliato....va bè ormai è
fatta:
in pratica ho una directory A in cui ci sono files della 12.0
(che speravo venissero cancellati invece sono ancora lì) e files
nuovi della 12.1 (quelli compersi nella lista richiamata con
l'opzione --files-from di rsync). E poi ho una directory vuota B.
Voglio che in B vadano tutti i files della 12.1 ma non quelli
della 12.0 partendo da A.
Semplice: lancio rsync con uno script del genere (per esempio):
BASE_OPT="-avz --delete --delete-after --progress -h"
LIST="--files-from=/path/to/LIST.TXT"
REMOTE="/path/to/A/"
LOCAL="/path/to/B/"
clear
rsync $BASE_OPT $LIST $REMOTE $LOCAL
Cosa mi aspetto che faccia?
Mi aspetto che in B finiscano tutti e soli i files di A compresi
nella LIST.TXT e che siano realmente quelli giusti (non solo per
via del nome e percorso giusto, quanto anche per quanto riguarda
la struttura digitale dei files stessi).
Non vorrei per esempio che in A il file
/A/slackware/a/pippo-2.3-i486-1.tgz
Fosse magari per omonimia quello della slackware 12....  :-6
....Non mi sono spiegato bene...
Ripartiamo:
1- con rsync scarico da un mirror remoto un certo numero di files
bansandomi su una lista ricavata dal FILELIST.TXT della dir
remota stessa.
(sito.remoto/percorso/slackware-12.1/FILELIST.TXT).
Certo quel file l'ho dovuto un attimo rimodellare e viene fuori
una cosa del genere...tanto per chiarire la differenza:
$ tail -n 5 .rsync.sh.conf/{FILELIST.TXT,LIST.TXT}
==> .rsync.sh.conf/FILELIST.TXT <==
-rw-r--r--  1 root root     2404 2008-04-08 17:28
./usb-and-pxe-installers/etherboot/populate_tftpboot_symlinks.sh
-rw-r--r--  1 root root      587 2007-04-25 12:54
./usb-and-pxe-installers/etherboot/rc.dhcpd
-rw-r--r--  1 root root      547 2007-04-26 04:36
./usb-and-pxe-installers/etherboot/rc.tftpd
-rw-r--r--  1 root root      484 2008-04-30 22:42
./usb-and-pxe-installers/pxelinux.cfg_default
-rw-r--r--  1 root root 27201536 2008-04-30 22:42
./usb-and-pxe-installers/usbboot.img
==> .rsync.sh.conf/LIST.TXT <==
slackware/n/tin-1.8.2-i486-1.tgz.asc
slackware/n/tin-1.8.2-i486-1.txt
slackware/n/wget-1.11.1-i486-1.tgz
slackware/n/wget-1.11.1-i486-1.tgz.asc
slackware/n/wget-1.11.1-i486-1.txt
Ok, LIST.TXT contiene il percorso dei file relativi alla dir
remota slackware-12.1.
Se la dir locale fosse vuota, tutti i file di LIST.TXT verrebbero
scaricati e tanti saluti.
Il dubbio che ho è questo:
consideriamo i due repo della 12.0 e 12.1 e prendiamo un file che
presenti lo stesso nome...per esempio:
$ ls -R slackware/slackware-12.1/slackware/a|grep sysklogd
sysklogd-1.4.1-i486-10.tgz
sysklogd-1.4.1-i486-10.tgz.asc
sysklogd-1.4.1-i486-10.txt
$ ls -R slackware/slackware-12.0/slackware/a|grep sysklogd
sysklogd-1.4.1-i486-10.tgz
sysklogd-1.4.1-i486-10.tgz.asc
sysklogd-1.4.1-i486-10.txt
Ora poniamo che la directory locale...chiamiamola A contenga:
slackware/a/sysklogd-1.4.1-i486-10.tgz
Immaginiamo per semplicità che la nostra lista LIST.TXT contenga
solo la riga:
slackware/a/sysklogd-1.4.1-i486-10.tgz
Ora voglio sincronizzare A con la directory remota *non* della 12
ma dell *12.1*. Sapendo che in tale directroy esiste quel file lì
con quello steso percorso.
Se lancio rsync con l'opzione --files-from. Cosa succede?
Immagino che i due files (locale e remoto) differiscano perchè
compilati con gcc diversi ecc ecc...ipotesi.
Ma hanno lo stesso nome. E allora come si comporta rsync?
1- rsync scarica il file remoto ma non sovrascrive quello locale
2- rsync scarica il file remoto e sovrascrive quello locale
3- rsync non scarica il file rmoto perchè quello locale ha lo
   stesso nome?
Spero di aver chiarito la domanda. Se pensate di conoscere la
risposta ma non capite troppo bene la domanda per via della mia
espereessione confusionaria....non esitate a richiedere un
ulteriore chiarimento.
Chiedo veramente scusa per la lunghezza...  :-|
Spero vogliate/possiate darmi una mano a chiarirmi le idee.
