Indice
In questo capitolo sono descritti strumenti e trucchi per gestire dati binari e di testo in un sistema Debian.
![]() |
Avvertimento |
---|---|
L'accesso in scrittura non coordinato a device a cui si sta attivamente
accedendo e a file da parte di processi diversi deve essere evitato per
prevenire le race condition. Per
evitare ciò devono essere usati i meccanismi di lock dei file utilizzando
|
La sicurezza dei dati e la loro condivisione controllata hanno diversi aspetti.
La creazione di archivi di dati
L'accesso ad archivi remoti
La duplicazione
Il tenere traccia della cronologia delle modifiche
La facilitazione della condivisione dei dati
Il prevenire l'accesso non autorizzato ai file
La rilevazione di modifiche non autorizzate ai file
Queste azioni possono essere realizzate usando una combinazione di strumenti.
Strumenti di archiviazione e compressione
Strumenti di copia e sincronizzazione
file system di rete
Supporti di archiviazione removibili
Secure Shell
Il sistema di autenticazione
Strumenti per sistemi di controllo delle versioni
Strumenti crittografici per hash e cifratura
Ecco una tabella riassuntiva degli strumenti di archiviazione e compressione disponibili per il sistema Debian.
Tabella 10.1. Elenco di strumenti di archiviazione e compressione
pacchetto | popcon | dimensione | estensione | comando | commento |
---|---|---|---|---|---|
tar
|
V:914, I:999 | 3152 | .tar |
tar (1) |
strumento di archiviazione standard (standard de facto) |
cpio
|
V:489, I:998 | 1144 | .cpio |
cpio (1) |
strumento di archiviazione Unix in stile System V, da usare con
find (1) |
binutils
|
V:164, I:673 | 97 | .ar |
ar (1) |
strumento di archiviazione per la creazione di librerie statiche |
fastjar
|
V:2, I:25 | 183 | .jar |
fastjar (1) |
strumento di archiviazione per Java (simile a zip) |
pax
|
V:12, I:24 | 170 | .pax |
pax (1) |
nuovo strumento POSIX di archiviazione, compromesso tra
tar e cpio |
gzip
|
V:891, I:999 | 242 | .gz |
gzip (1), zcat (1), … |
utilità GNU di compressione LZ77 (standard de facto) |
bzip2
|
V:147, I:973 | 122 | .bz2 |
bzip2 (1), bzcat (1), … |
utilità per compressione con
ordinamento dei blocchi Burrows-Wheeler con maggiore rapporto di
compressione di gzip (1) (più lenta di
gzip con sintassi simile) |
lzma
|
V:2, I:27 | 149 | .lzma |
lzma (1) |
LZMA compression utility with higher compression
ratio than gzip (1) (deprecated) |
xz-utils
|
V:453, I:980 | 612 | .xz |
xz (1), xzdec (1), … |
utilità di compressione XZ con maggiore rapporto
di compressione di bzip2 (1) (più lenta di
gzip , ma più veloce di bzip2 ;
sostituto dell'utilità di compressione LZMA) |
zstd
|
V:4, I:24 | 1902 | .zstd |
zstd (1), zstdcat (1), … |
Zstandard fast lossless compression utility |
p7zip
|
V:79, I:454 | 987 | .7z |
7zr (1), p7zip (1) |
strumento di archiviazione file 7-Zip con alto rapporto di compressione (compressione LZMA) |
p7zip-full
|
V:102, I:469 | 4664 | .7z |
7z (1), 7za (1) |
strumento di archiviazione file 7-Zip con alto rapporto di compressione (compressione LZMA e altre) |
lzop
|
V:10, I:85 | 164 | .lzo |
lzop (1) |
utilità di compressione LZO con velocità di
compressione e decompressione più alta di quella di
gzip (1) (più basso rapporto di compressione di
gzip con sintassi simile) |
zip
|
V:49, I:427 | 623 | .zip |
zip (1) |
InfoZIP: strumento di archiviazione e compressione per DOS |
unzip
|
V:132, I:792 | 385 | .zip |
unzip (1) |
InfoZIP: strumento di estrazione di archivi e decompressione per DOS |
![]() |
Avvertimento |
---|---|
Non impostare la variabile " |
Gli archivi tar
(1) compressi con gzip usano l'estensione
di file ".tgz
" o ".tar.gz
".
Gli archivi tar
(1) compressi con xz usano l'estensione di
file ".txz
" o ".tar.xz
".
La popolarità dei metodi di compressione negli strumenti FOSS come tar
(1) è cambiata nel
tempo nel modo seguente gzip
→ bzip2
→
xz
cp
(1), scp
(1) e
tar
(1) possono avere alcune limitazioni per file
speciali. cpio
(1) è più versatile.
cpio
(1) è progettato per essere usato con
find
(1) ed altri comandi adatti per creare script di
backup, dato che la porzione di selezione dei file dello script può essere
testata in modo autonomo.
La struttura interna dei file di dati di LibreOffice è quella dei file
«.jar
» che può essere aperta anche da
unzip
.
Lo strumento multipiattaforma di fatto usato per gli archivi è
zip
. Usarlo come «zip -rX
» per
ottenere la massima compatibilità. Usare anche l'opzione
«-s
» se è importante la dimensione massima dei file.
Ecco una tabella riassuntiva dei semplici strumenti di copia e backup disponibili in un sistema Debian.
Tabella 10.2. Elenco di strumenti di copia e sincronizzazione
pacchetto | popcon | dimensione | strumento | funzione |
---|---|---|---|---|
coreutils
|
V:901, I:999 | 17478 | GNU cp | copia file e directory localmente ("-a" per modalità ricorsiva) |
openssh-client
|
V:809, I:997 | 4298 | scp | copia file e directory da remoto (client, "-r " per
modalità ricorsiva) |
openssh-server
|
V:701, I:844 | 1567 | sshd | copia file e directory da remoto (server remoto) |
rsync
|
V:311, I:564 | 677 | sincronizzazione e backup in remoto unidirezionale | |
unison
|
V:3, I:16 | 14 | sincronizzazione e backup in remoto bidirezionale |
La copia dei file con rsync
(8) offre un insieme di
funzionalità più ricco di altri strumenti.
l'algoritmo delta-transfer, che invia solamente le differenze tra il file sorgente ed il file esistente nella destinazione
algoritmo veloce di verifica (predefinito) che cerca i file la cui dimensione o il cui orario di ultima modifica sono cambiati
opzioni "--exclude
" e "--exclude-from
"
simili a quelle di tar
(1)
sintassi con "una barra / alla fine della directory sorgente" che evita di dover creare un livello aggiuntivo di directory nella destinazione
![]() |
Suggerimento |
---|---|
Gli strumenti di controllo delle versioni VCS (Version control system) in Tabella 10.11, «Elenco di strumenti per sistemi di controllo delle versioni» possono essere usati come strumenti di copia e sincronizzazione multidirezionali. |
Ecco diversi modi di archiviare ed estrarre archivi con l'intero contenuto
della directory "./sorgente
", usando diversi strumenti.
GNU tar
(1):
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
In alternativa usare i comandi seguenti.
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -F -
cpio
(1):
$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio $ zcat archive.cpio.xz | cpio -i
Ecco diversi modi di copiare l'intero contenuto della directory
"./sorgente
", usando diversi strumenti.
Copia locale: directory "./sorgente
" → directory
"/dest
"
Copia remota: directory "./sourgente
" sull'host locale →
directory "/dest
" sull'host
"utente@host.dom
"
rsync
(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
In alternativa si può usare la sintassi con "una barra / alla fine della directory sorgente".
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
In alternativa usare i comandi seguenti.
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest
GNU cp
(1) e openSSH scp
(1):
# cd ./source; cp -a . /dest # cd ./source; scp -pr . user@host.dom:/dest
GNU tar
(1):
# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'
cpio
(1):
# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
In tutti gli esempi contenenti ".
", si può sostituire
".
" con "pippo
" per copiare i file
dalla directory "./sorgente/pippo
" alla directory
"/dest/pippo
".
In tutti gli esempi contenenti ".
", si può sostituire
".
" con il percorso assoluto
"/percorso/di/sorgente/pippo
" per evitare di fare
"cd ./sorgente;
". I file verranno copiati in posizioni
diverse a seconda dello strumento utilizzato, come descritto qui di seguito.
in "/dest/pippo
": rsync
(8), GNU
cp
(1) e scp
(1)
"/dest/percorso/di/sorgente/pippo
": GNU
tar
(1) e cpio
(1)
![]() |
Suggerimento |
---|---|
|
find
(1) viene usato per selezionare i file per i comandi
di archiviazione e copia (vedere Sezione 10.1.3, «Esempi di invocazione per archivi» e
Sezione 10.1.4, «Esempi di invocazione per la copia») o per xargs
(1)
(vedere Sezione 9.4.9, «Ripetere un comando su diversi file»). Questo
funzionamento può essere migliorato usando le sue opzioni di comando.
La sintassi base di find
(1) può essere riassunta nel modo
seguente.
Gli argomenti condizionali sono valutati da sinistra a destra.
Questa valutazione si ferma una volta che il risultato è determinato.
L'operatore "OR logico" (specificato con
"-o
" tra condizioni) ha una precedenza più bassa
dell'operatore "AND logico" (specificato
da "-a
" o dall'assenza di un operatore tra condizioni).
L'operatore "NOT logico" (specificato da
"!
" prima di una condizione) ha una precedenza più alta
di un operatore "AND logico".
L'opzione "-prune
" restituisce sempre una condizione di
VERO logico e, se si tratta di una
directory, la ricerca si ferma a questo punto.
L'opzione "-name
trova corrispondenze con il nome base
del file tramite espressioni glob di shell (vedere Sezione 1.5.6, «Glob della shell»), ma fa corrispondenza anche con il carattere
iniziale ".
" con l'uso di metacaratteri come
"*
" e "?
". (Nuova funzionalità POSIX.)
L'opzione "-regex
" trova corrispondenze con il percorso
completo usando, in modo predefinito, BRE
in stile emacs (vedere Sezione 1.6.2, «Espressioni regolari»).
L'opzione "-size
" trova corrispondenze con file in base
alla loro dimensione (valori preceduti da "+
" o
"-
" per cercare dimensioni, rispettivamente, più grandi o
piccole del valore).
L'opzione "-newer
" trova corrispondenze con file più
recenti di quello specificato come argomento dell'opzione.
L'opzione "-print0
" restituisce sempre il valore logico
VERO e stampa il nome file completo
(terminato dal carattere null) sullo
standard output.
find
(1) è spesso usato con uno stile di invocazione come
il seguente.
# find /path/to \ -xdev -regextype posix-extended \ -type f -regex ".*\.cpio|.*~" -prune -o \ -type d -regex ".*/\.git" -prune -o \ -type f -size +99M -prune -o \ -type f -newer /path/to/timestamp -print0
Il comando precedente si traduce nelle azioni seguenti.
Cercare tutti i file a partire da "/percorso/di
"
Limitare globalmente la ricerca al file system da cui è richiamato e usare espressioni regolari ERE (vedere Sezione 1.6.2, «Espressioni regolari»)
Escludere i file che corrispondono all'espressione regolare
".*\.cpio
" o ".*~
" dalla ricerca
fermando la loro elaborazione
Escludere le directory che corrispondono all'espressione regolare
".*/\.git
" dalla ricerca fermando la loro elaborazione
Escludere i file più grandi di 99 Megabyte (unità di 1048576 byte) dalla ricerca fermando la loro elaborazione
Stampare i nomi di file che soddisfano le condizioni di ricerca precedenti e
che siano più recenti di "/percorso/di/marcaturaorario
"
Notare nell'esempio precedente l'uso della parte di comando "-prune
-o
per escludere file.
![]() |
Nota |
---|---|
Alcune opzioni per |
Quando si deve scegliere il supporto di archiviazione di dati informatici per un importante archivio di dati, si dovrebbe porre attenzione alle limitazioni dei supporti. Per piccoli backup di dati personali, io uso CD-R e DVD-R scegliendoli in base alla marca del produtttore e conservandoli in un ambiente fresco, all'ombra, asciutto e pulito. (I supporti di archiviazione a nastro sembrano molto popolari per gli usi professionali.)
![]() |
Nota |
---|---|
Le casseforti a prova di fuoco sono pensate per i documenti cartacei. La maggior parte dei supporti di archiviazione di dati informatici ha una tolleranza più bassa alle alte temperature rispetto alla carta. Di solito mi affido a copie multiple cifrate sicure conservate in diverse posizioni sicure. |
Durata di vita ottimistica di diversi supporti di archiviazione da dati raccolti in rete (per lo più dalle informazioni dei produttori).
100+ anni: carta senza acidi con inchiostro
100 anni: supporti ottici (CD/DVD, CD/DVD-R)
30 anni: supporti magnetici (nastri, dischetti floppy)
20 anni: supporti ottici a cambio di fase (CD-RW)
Questi tempi non tengono conto dei danni meccanici causati dal maneggiamento, ecc.
Cicli di scrittura ottimistici di diversi supporti di archiviazione da dati raccolti in rete (per lo più dalle informazioni dei produttori).
250,000+ cicli: unità a disco fisso
10,000+ cicli: memoria flash
1,000 cicli: CD/DVD-RW
1 ciclo: CD/DVD-R, carta
![]() |
Attenzione |
---|---|
I valori di durata di vita e dei cicli di scrittura riportati non dovrebbero essere usati per prendere decisioni riguardo all'archiviazione di dati critici. Consultare le informazioni specifiche per ciascun prodotto forniti dal produttore. |
![]() |
Suggerimento |
---|---|
Dato che i CD/DVD-R e la carta hanno un solo ciclo di scrittura, prevengono per loro stessa natura le perdite accidentali di dati per sovrascrittura. Questo è un vantaggio! |
![]() |
Suggerimento |
---|---|
Se è necessario fare backup frequenti e veloci di una grande quantità di dati, un disco fisso su un host remoto connesso con una connessione veloce, potrebbe essere l'unica soluzione realistica. |
Un support di archiviazione removibile può essere uno dei seguenti.
Fotocamera digitale
Lettore audio digitale
Possono essere connessi in uno dei modi seguenti.
Gli ambienti desktop moderni, come GNOME e KDE, possono montare questi
dispositivi removibili automaticamente senza una voce corrispondente in
"/etc/fstab
".
![]() |
Suggerimento |
---|---|
I dispositivi montati automaticamente hanno l'opzione di mount
" |
![]() |
Suggerimento |
---|---|
Nei moderni ambienti desktop il montaggio automatico avviene solo quando i
device dei supporti removibili non sono elencati in
" |
Il punto di mount negli ambienti desktop moderni viene scelto come
"/media/etichetta_disco
" che può
essere personalizzata nel modo seguente.
mlabel
(1) per file system FAT
genisoimage
(1) con l'opzione "-V
" per
file system ISO9660
tune2fs
(1) con l'opzione "-L
" per file
system ext2/ext3/ext4
![]() |
Suggerimento |
---|---|
Può essere necessario fornire come opzione di montaggio la scelta della codifica (vedere Sezione 8.1.3, «Codifica per i nomi di file»). |
![]() |
Suggerimento |
---|---|
L'uso del menu GUI per smontare un file system può rimuovere il suo nodo di
device generato dinamicamente come " |
Quando si condividono dati con un altro sistema attraverso dispositivi di archiviazione removibili, quest'ultimi andrebbero formattati con un filesystem comune supportato da entrambi i sistemi. Quello che segue è un elenco delle scelte possibili per il file system.
Tabella 10.3. Elenco di possibili scelte per il file system di dispositivi di archiviazione removibili con scenari di uso tipici
filesystem name | typical usage scenario |
---|---|
FAT12 | condivisione interpiattaforma di dati su dischetti floppy (<32MiB) |
FAT16 | condivisione interpiattaforma di dati su dispositivi come piccoli dischi fissi (<2GiB) |
FAT32 | condivisione interpiattaforma di dati su dispositivi come grandi dischi fissi (<8TiB, supportato da sistemi più recenti di MS Windows95 OSR2) |
exFAT | cross platform sharing of data on the large hard disk like device (<512TiB, supported by WindowsXP, Mac OS X Snow Leopard 10.6.5, and Linux kernel since 5.4 release) |
NTFS | condivisione interpiattaforma di dati su dispositivi come grandi dischi fissi (supportato nativamente su MS Windows NT e versioni successive e supportato da NTFS-3G attraverso FUSE in Linux) |
ISO9660 | condivisione interpiattaforma di dati statici su CD-R e DVD+/-R |
UDF | scrittura incrementale di dati su CD-R e DVD+/-R (nuovo) |
MINIX | archiviazione, efficiente in termini di spazio, di file dati unix su dischetti floppy |
ext2 | condivisione di dati su dispositivi come dischi fissi con sistemi Linux più vecchi |
ext3 | condivisione di dati su dispositivi come dischi fissi con sistemi Linux più vecchi |
ext4 | condivisione di dati su dispositivi come dischi fissi con sistemi Linux recenti |
btrfs | sharing of data on the hard disk like device with current Linux systems with read-only snapshots |
![]() |
Suggerimento |
---|---|
Vedere Sezione 9.9.1, «Cifratura di dischi removibili con dm-crypt/LUKS» per la condivisione interpiattaforma di dati usando cifratura a livello di dispositivo. |
Il file system FAT è supportato da quasi tutti i sistemi operativi moderni ed è piuttosto utile per scopi di scambio di dati attraverso supporti come dischi fissi removibili.
Quando si formatta un dispositivo come un disco fisso removibile con il file system FAT per la condivisione interpiattaforma di dati, le scelte seguenti dovrebbero essere quelle più sicure.
Partizionare con fdisk
(8), cfdisk
(8) o
parted
(8) (vedere Sezione 9.6.2, «Configurazione del partizionamento dei dischi») creando un'unica partizione
primaria e marcarla nel modo seguente.
Tipo "6", cioè FAT16, per supporti più piccoli di 2GB.
Tipo "c", cioè FAT32 (LBA), per supporti più grandi.
Formattare la partizione primaria con mkfs.vfat
(8) nel
modo seguente.
Per FAT16, semplicemente con il suo nome di device, ad esempio
"/dev/sda1
".
Per FAT32, con il suo nome di device e l'opzione esplicita, ad esempio
"-F 32 /dev/sda1
"
Quando si usano i file system FAT o ISO9660 per la condivisione dei dati, per essere sicuri dei risultati, si dovrebbero considerare i seguenti aspetti.
Archiviare prima i file in un file di archivio usando
tar
(1) o cpio
(1) per mantenere i nomi
di file lunghi, i collegamenti simbolici, i permessi Unix sui file originali
e le informazioni sui proprietari.
Suddividere il file di archivio in pezzi più piccoli di 2 GiB con il comando
split
(1) per proteggerli da limitazioni sulla dimensione
dei file.
Cifrare il file archivio per proteggere i suoi contenuti da accesso non autorizzato.
![]() |
Nota |
---|---|
Il file system FAT, per sua stessa natura, permette una dimensione massima
per i file di |
![]() |
Nota |
---|---|
La stessa Microsoft non raccomanda l'uso di FAT per le unità o le partizioni più grandi di 200 MB. Microsoft evidenzia le sue limitazioni, quali un uso inefficiente dello spazio su disco, nel documento "Overview of FAT, HPFS, and NTFS File Systems". Naturalmente per Linux si dovrebbe normalmente usare il file system ext4. |
![]() |
Suggerimento |
---|---|
Per maggiori informazioni sui file system e sull'accesso ad essi, leggere il "Filesystems HOWTO". |
Quando si condividono dati con un altro sistema attraverso una rete, si dovrebbero tenere a mente i servizi comuni. Ecco alcuni suggerimenti.
Tabella 10.4. Elenco dei servizi di rete da scegliere in base allo scenario di uso tipico
servizio di rete | descrizione dello scenario di uso tipico |
---|---|
file system montato di rete SMB/CIFS con Samba | condivisione di file attraverso "rete Microsoft Windows", vedere
smb.conf (5) e The Official Samba 3.x.x HOWTO and
Reference Guide o il pacchetto samba-doc |
file system montato di rete NFS con il kernel Linux | condivisione di file attraverso "rete Unix/Linux", vedere
exports (5) e Linux
NFS-HOWTO |
servizio HTTP | condivisione di file tra client/server web |
servizio HTTPS | condivisione di file tra client/server web con SSL (Secure Sockets Layer) cifrato o TLS (Transport Layer Security) |
servizio FTP | condivisione di file tra client/server FTP |
Sebbene questi file system montati in rete e metodi di trasferimento di file attraverso la rete siano piuttosto comodi per la condivisione dei dati, possono essere non sicuri. La loro connessione di rete deve essere resa sicura nel modo seguente.
Vedere anche Sezione 6.5, «Altri server di rete» e Sezione 6.6, «Altri client di rete».
Tutti sanno che i computer a volte si danneggiano oppure errori umani causano danni al sistema e ai dati. Le operazioni di backup e ripristino sono una parte essenziale di un'amministrazione di sistema di successo. Tutte i possibili modi in cui si possono creare danni si verificano prima o poi.
![]() |
Suggerimento |
---|---|
Mantenere il proprio sistema di backup semplice e fare il backup di sistema spesso. Avere dati di backup è più importante della qualità tecnica del metodo di backup. |
Ci sono 3 fattori chiave che determinano la reale politica di backup e ripristino.
Sapere di cosa fare il backup ed il ripristino
I file dati direttamente creati dall'utente: in "~/
"
I file dati creati da applicazioni usate dall'utente: dati in
"/var/
" (tranne "/var/cache/
",
"/var/run/
" e "/var/tmp/
")
File di configurazione del sistema: dati in "/etc/
"
Software locali: dati in "/usr/local/
" o
"/opt/
"
Informazioni di installazione del sistema: un memorandum in puro testo sui passi chiave (partizioni, …)
Insiemi di dati comprovati: confermati da operazioni preventive sperimentali di ripristino
Sapere come fare il backup ed il ripristino
Rendere sicura l'archiviazione dei dati: protezione da sovrascritture e fallimenti del sistema
Backup frequenti: backup pianificati
Backup ridondanti: mirror di dati
Procedura a prova di idioti: singolo facile comando di backup
Valutazione dei rischi e dei costi
Valore dei dati se persi
Risorse necessarie per il backup: umane, hardware, software, …
Modi in cui le cose possono andare storte e loro probabilità
![]() |
Nota |
---|---|
Non fare il backup dei contenuti dei pseudo file system che si trovano in
|
Per quanto riguarda il rendere sicura l'archiviazione dei dati, questi dovrebbero essere come minimo in una partizione diversa del disco e preferibilmente su dischi e macchine diversi per sopravvivere alla corruzione del file system. È preferibile archiviare i dati importanti su supporti scrivibili una sola volta, come CD/DVD-R per prevenire incidenti di sovrascrittura. (Vedere Sezione 9.8, «I dati binari» per come scrivere sul supporto di archiviazione dalla riga di comando. L'ambiente desktop GNOME con interfaccia grafica fornisce un facile accesso tramite menu: "Risorse→Creazione CD/DVD".)
![]() |
Nota |
---|---|
Durante il backup dei dati può essere preferibile fermare alcuni demoni applicativi come l'MTA (vedere Sezione 6.2.4, «Agente di trasporto della posta (MTA)»). |
![]() |
Nota |
---|---|
Si dovrebbe dare un'attenzione particolare al backup ed al ripristino di
file con dati relativi all'identità dell'utente, come
" |
![]() |
Nota |
---|---|
Se si esegue un compito di cron come processo di un utente, si deve
ripristinare i file nella directory
" |
Quello che segue è un elenco di importanti suite di utilità di backup disponibili in un sistema Debian
Tabella 10.5. Elenco di suite con utilità di backup
pacchetto | popcon | dimensione | descrizione |
---|---|---|---|
dump
|
V:1, I:6 | 352 | dump (8) e restore (8) di BSD 4.4 per file system ext2/ext3/ext4 |
xfsdump
|
V:0, I:9 | 854 | dump e ripristino con xfsdump (8) e
xfsrestore (8) per file system XFS in GNU/Linux e IRIX |
backupninja
|
V:3, I:4 | 367 | sistema di meta-backup leggero ed estensibile |
bacula-common
|
V:10, I:14 | 2158 | Bacula: backup, ripristino e controllo in rete - file comuni di supporto |
bacula-client
|
I:3 | 183 | Bacula: backup, ripristino e controllo in rete - metapacchetto client |
bacula-console
|
V:1, I:4 | 107 | Bacula: backup, ripristino e controllo in rete - console testuale |
bacula-server
|
I:1 | 183 | Bacula: backup, ripristino e controllo in rete - metapacchetto server |
amanda-common
|
V:1, I:2 | 10030 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Librerie) |
amanda-client
|
V:1, I:2 | 1088 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Client) |
amanda-server
|
V:0, I:0 | 1075 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Server) |
backup-manager
|
V:1, I:1 | 571 | strumento di backup a riga di comando |
backup2l
|
V:0, I:1 | 114 | strumento di backup/ripristino per supporti montabile (basato su dischi) che richiede bassa manutenzione |
backuppc
|
V:3, I:3 | 3183 | BackupPC è un sistema ad altre prestazioni di qualità professionale per il backup di PC (basato su dischi) |
duplicity
|
V:9, I:19 | 1834 | backup incrementali (remoti) |
flexbackup
|
V:0, I:0 | 243 | backup incrementali (remoti) |
rdiff-backup
|
V:6, I:14 | 733 | backup incrementali (remoti) |
restic
|
V:1, I:4 | 22540 | backup incrementali (remoti) |
slbackup
|
V:0, I:0 | 151 | backup incrementali (remoti) |
Gli strumenti di backup hanno una propria specializzazione.
Mondo Rescue è un sistema di backup per facilitare il ripristino veloce di un sistema completo a partire da backup su CD/DVD ecc., senza dover affrontare il normale processo di installazione del sistema.
Bacula, Amanda e BackupPC sono suite di utilità di backup complete che sono pensate per backup regolari in rete.
Regular backups of user data can be realized by a simple script (Sezione 10.2.2, «Personal backup»).
Gli strumenti base descritti in Sezione 10.1.1, «Strumenti di archiviazione e compressione» e Sezione 10.1.2, «Strumenti di copia e sincronizzazione» possono essere usati per facilitare il backup di sistema attraverso script personalizzati. Tali script possono essere migliorati con gli strumenti seguenti.
Il pacchetto restic
permette backup incrementali
(remoti).
Il pacchetto rdiff-backup
permette backup incrementali
(remoti).
Il pacchetto dump
aiuta ad archiviare e ripristinare
tutto il file system in maniera incrementale ed efficiente.
![]() |
Suggerimento |
---|---|
Per imparare ulteriori informazioni sul pacchetto |
For a personal Debian desktop system running testing
suite, I only need to protect personal and critical data. I reinstall
system once a year anyway. Thus I see no reason to backup the whole system
or to install a full featured backup utility.
At the same time, it is very valuable to have frequent recent snapshots of personal data and system configuration, and occasional full backups of personal data.
I usually make these snapshots and backups with a simple shell script bss. This script is a short shell which uses standard
utilities: btrfs subvolume snapshot
,
rsync
, cp
.
![]() |
Suggerimento |
---|---|
Si possono ripristinare i dati di configurazione di debconf con
" |
L'infrastruttura di sicurezza dei dati viene fornita dalla combinazione di strumenti di cifratura dei dati, strumenti message digest e strumenti di firma.
Tabella 10.6. Elenco di strumenti per l'infrastruttura di sicurezza dei dati
pacchetto | popcon | dimensione | comando | descrizione |
---|---|---|---|---|
gnupg
|
V:498, I:942 | 864 | gpg (1) |
GNU Privacy Guard - strumento OpenPGP di cifratura e firma |
gpgv
|
V:890, I:999 | 882 | gpgv (1) |
GNU Privacy Guard - strumento di verifica delle firme |
paperkey
|
V:1, I:13 | 58 | paperkey (1) |
estrae solamente le informazioni segrete da chiavi OpenPGP segrete |
cryptsetup
|
V:41, I:77 | 407 | cryptsetup (8), … |
utilities for dm-crypt block device encryption supporting LUKS |
coreutils
|
V:901, I:999 | 17478 | md5sum (1) |
calcola e controlla message digest MD5 |
coreutils
|
V:901, I:999 | 17478 | sha1sum (1) |
calcola e controlla message digest SHA1 |
openssl
|
V:814, I:994 | 1465 | openssl (1ssl) |
calcola message digest con "openssl dgst " (OpenSSL) |
See Sezione 9.9, «Suggerimenti per la cifratura dei dati» on dm-crypt and ecryptfs which implement automatic data encryption infrastructure via Linux kernel modules.
Quelli che seguono sono alcuni comandi per GNU Privacy Guard per la gestione base delle chiavi.
Tabella 10.7. Elenco di comandi per GNU Privacy Guard per la gestione delle chiavi
comando | descrizione |
---|---|
gpg --gen-key |
Genera una nuova chiave |
gpg --gen-revoke mio_ID_utente |
genera una chiave di revoca per mio_ID_utente |
gpg --edit-key user_ID |
modifica la chiave in modo interattivo, "help" per l'aiuto |
gpg -o file --export |
esporta tutte le chiavi in un file |
gpg --import file |
importa tutte le chiavi da un file |
gpg --send-keys ID_utente |
invia la chiave di ID_utente al server di chiavi |
gpg --recv-keys ID_utente |
riceve la chiave di ID_utente dal server di chiavi |
gpg --list-keys ID_utente |
elenca le chiavi di ID_utente |
gpg --list-sigs ID_utente |
elenca le firme di ID_utente |
gpg --check-sigs ID_utente |
controlla le firme di ID_utente |
gpg --fingerprint ID_utente |
controlla le impronte digitali di ID_utente |
gpg --refresh-keys |
aggiorna il portachiavi locale |
Quelli seguenti sono i significati dei codici di fiducia.
Tabella 10.8. Elenco dei significati dei codici di fiducia
codice | descrizione della fiducia |
---|---|
- |
nessuna fiducia assegnata dal proprietario / ancora non calcolata |
e |
calcolo della fiducia fallito |
q |
informazioni insufficienti per il calcolo |
n |
non fidarsi mai di questa chiave |
m |
marginalmente affidabile |
f |
completamente fidata |
u |
definitivamente fidata |
Il comando seguente carica la mia chiave "1DD8D791
" sul
popolare server di chiavi "hkp://keys.gnupg.net
".
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791
Un buon server di chiavi predefinito impostato in
"~/.gnupg/gpg.conf
" (o nella vecchia posizione
"~/.gnupg/options
") si ottiene la voce seguente.
keyserver hkp://keys.gnupg.net
Il comando seguente recupera le chiavi sconosciute dal server di chiavi.
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\ cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
In OpenPGP Public Key Server
(versioni pre-0.9.6) esisteva un bug che corrompeva le chiavi con più di 2
sottochiavi. I pacchetti GnuPG
più recenti (>1.2.1-2)
possono gestire queste sottochiavi corrotte. Vedere l'opzione
"--repair-pks-subkey-bug
in gpg
(1).
Quelli seguenti sono esempi di comandi per usare GNU Privacy Guard su file.
Tabella 10.9. Elenco di comandi GNU Privacy Guard per file
comando | descrizione |
---|---|
gpg -a -s file |
firma un file in file.asc con corazza ASCII |
gpg --armor --sign file |
" " |
gpg --clearsign file |
inserisce una firma leggibile nel messaggio |
gpg --clearsign file|mail pippo@example.org |
invia un messaggio di posta firmato leggibile a
pippo@example.org |
gpg --clearsign --not-dash-escaped patchfile |
inserisce una firma leggibile in patchfile |
gpg --verify file |
verifica un file con firma leggibile |
gpg -o file.sig -b file |
crea una firma staccata |
gpg -o file.sig --detach-sig file |
" " |
gpg --verify file.sig file |
verifica file con file.sig |
gpg -o cifr_file.gpg -r nome -e file |
cifratura di file nel file binario cifr_file.gpg usando la chiave pubblica indirizzata a nome |
gpg -o cifr_file.gpg --recipient nome --encrypt file |
" " |
gpg -o cifr_file.asc -a -r nome -e file |
cifratura di file nel file con cifratura corazzata ASCII cifr_file.asc usando la chiave pubblica indirizzata a nome |
gpg -o cifr_file.gpg -c file |
cifratura simmetrica da file a cifr_file.gpg |
gpg -o cifr_file.gpg --symmetric file |
" " |
gpg -o cifr_file.asc -a -c file |
cifratura simmetrica pensata per nome di file nel file con cifratura corazzata ASCII cifr_file.asc |
gpg -o file -d cifr_file.gpg -r nome |
decifratura |
gpg -o file --decrypt cifr_file.gpg |
" " |
Aggiungere quanto seguie al file "~/.muttrc
" per evitare
che il lento GnuPG venga avviato automaticamente, permettendo allo stesso
tempo di richiamarlo digitando "S
" nel menu della vista
indice.
macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no
The gnupg
plugin let you run GnuPG transparently for
files with extension ".gpg
", ".asc
",
and ".ppg
".[4]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
md5sum
(1) fornisce un'utilità per creare un file digest
usando il metodo descritto nella rfc1321 e
per verificare i file con esso.
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
![]() |
Nota |
---|---|
Il calcolo delle somme di controllo MD5 è meno dispendioso in termini di CPU di quello delle firme crittografiche di GNU Privacy Guard (GnuPG). Di solito solamente il file digest di più alto livello è firmato crittograficamente per assicurare l'integrità dei dati. |
Esistono molti strumenti per la fusione di codice sorgente. Quello che segue è un elenco di strumenti che hanno catturato la mia attenzione.
Tabella 10.10. Elenco di strumenti per la fusione di codice sorgente
pacchetto | popcon | dimensione | comando | descrizione |
---|---|---|---|---|
patch
|
V:123, I:721 | 248 | patch (1) |
applica un file diff ad un originale |
vim
|
V:102, I:404 | 3286 | vimdiff (1) |
confronta 2 file uno di fianco all'altro in vim |
imediff
|
V:0, I:0 | 170 | imediff (1) |
strumento interattivo a tutto schermo per unione di modifiche a 2/3 vie |
meld
|
V:14, I:38 | 3065 | meld (1) |
confronta e fonde file (GTK) |
wiggle
|
V:0, I:0 | 174 | wiggle (1) |
applica le patch respinte |
diffutils
|
V:883, I:993 | 1598 | diff (1) |
confronta i file riga per riga |
diffutils
|
V:883, I:993 | 1598 | diff3 (1) |
confronta e fonde tre file riga per riga |
quilt
|
V:3, I:32 | 788 | quilt (1) |
gestisce serie di patch |
wdiff
|
V:8, I:69 | 644 | wdiff (1) |
mostra le differenze di parole tra file di testo |
diffstat
|
V:14, I:146 | 81 | diffstat (1) |
produce un istogramma delle modifiche apportate da un diff |
patchutils
|
V:16, I:143 | 232 | combinediff (1) |
crea una patch cumulativa da due patch incrementali |
patchutils
|
V:16, I:143 | 232 | dehtmldiff (1) |
estrae un diff da una pagina HTML |
patchutils
|
V:16, I:143 | 232 | filterdiff (1) |
estrae o esclude diff da un file diff |
patchutils
|
V:16, I:143 | 232 | fixcvsdiff (1) |
aggiusta file diff creati da CVS che sono male interpretati da
patch (1) |
patchutils
|
V:16, I:143 | 232 | flipdiff (1) |
scambia l'ordine di due patch |
patchutils
|
V:16, I:143 | 232 | grepdiff (1) |
mostra quali file siano modificati da una patch che fa corrispondenza con un'espressione regolare |
patchutils
|
V:16, I:143 | 232 | interdiff (1) |
mostra le differenze tra due file diff unificati |
patchutils
|
V:16, I:143 | 232 | lsdiff (1) |
mostra quali file vengano modificati da una patch |
patchutils
|
V:16, I:143 | 232 | recountdiff (1) |
ricalcola conteggi e offset in diff unificati |
patchutils
|
V:16, I:143 | 232 | rediff (1) |
aggiusta conteggi ed offset di un diff modificato a mano |
patchutils
|
V:16, I:143 | 232 | splitdiff (1) |
separa due patch incrementali |
patchutils
|
V:16, I:143 | 232 | unwrapdiff (1) |
ripristina patch il cui contenuto è stato mandato a capo automaticamente |
dirdiff
|
V:0, I:2 | 166 | dirdiff (1) |
mostra le differenze ed apporta i cambiamenti tra alberi di directory |
docdiff
|
V:0, I:0 | 555 | docdiff (1) |
confronta due file parola per parola / carattere per carattere |
makepatch
|
V:0, I:0 | 102 | makepatch (1) |
genera file patch estesi |
makepatch
|
V:0, I:0 | 102 | applypatch (1) |
applica file patch estesi |
Si possono estrarre le differenze tra due file sorgenti e creare file diff
unificati "file.patch0
" o
"file.patch1
", a seconda della posizione del file, con le
procedure seguenti.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
I file diff (chiamati anche file patch) sono usati per inviare aggiornamenti per un programma. Chi li riceve applica questo aggiornamento ad un altro file nel modo seguente.
$ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1
If you have two versions of a source code, you can perform 2-way merge
interactively using imediff
(1) by the following.
$ imediff -o file.merged file.old file.new
If you have three versions of a source code, you can perform 3-way merge
interactively using imediff
(1) by the following.
$ imediff -o file.merged file.yours file.base file.theirs
The version control systems (VCS) is sometimes known as the revision control system (RCS), or the software configuration management (SCM).
Git is the tool of choice these days since Git can do everything for both local and remote source code management.
Debian fornisce servizi Git liberi attraverso il servizio Debian Salsa. La sua documentazione è reperibile su https://wiki.debian.org/Salsa.
Here is a summary of the notable VCS on the Debian system.
Tabella 10.11. Elenco di strumenti per sistemi di controllo delle versioni
pacchetto | popcon | dimensione | strumento | tipo di VCS | commento |
---|---|---|---|---|---|
git
|
V:312, I:494 | 36515 | Git | distribuito | veloce DVCS in C (usato dal kernel Linux ed altri) |
gitk
|
V:5, I:41 | 1749 | Git | distribuito | visualizzazione GUI di alberi di repository VCS (Git) |
mercurial
|
V:6, I:44 | 1053 | Mercurial | distribuito | DVCS in Python e un po' di C |
darcs
|
V:0, I:7 | 23159 | Darcs | distribuito | DVCS con algebra intelligente per le patch (lento) |
bzr
|
V:1, I:15 | 28 | Bazaar | distribuito | DVCS influenced by tla written in Python (historic) |
tla
|
V:0, I:2 | 1011 | GNU arch | distribuito | DVCS mainly by Tom Lord (historic) |
subversion
|
V:18, I:104 | 4873 | Subversion | remoto | "CVS done right", newer standard remote VCS (historic) |
cvs
|
V:4, I:38 | 4620 | CVS | remoto | previous standard remote VCS (historic) |
tkcvs
|
V:0, I:1 | 1498 | CVS, … | remoto | visualizzazione GUI di alberi di archivi VCS (CVS, Subversion, RCS) |
rcs
|
V:3, I:19 | 562 | RCS | locale | "Unix SCCS done right" (historic) |
cssc
|
V:0, I:2 | 2044 | CSSC | locale | clone of the Unix SCCS (historic) |
È possibile che si desideri impostare diverse configurazioni globali, come
il nome e l'indirizzo di posta elettronica usati da Git, in
"~/.gitconfig
" nel modo seguente.
$ git config --global user.name "Name Surname" $ git config --global user.email yourname@example.com
Se si è abituati ai comandi di CVS o Subversion, si potrebbe volere impostare alcuni alias per i comandi nel modo seguente.
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
La configurazione globale può essere controllata con il comando seguente.
$ git config --global --list
Here is an overview of main Git commands.
Tabella 10.12. Comparazione di comandi VCS nativi
Git command | funzione |
---|---|
git init |
creazione dell'archivio (locale) |
git clone |
clone the remote repository as the working tree |
git pull |
aggiornare l'albero di lavoro fondendovi l'archivio remoto |
git add . |
aggiungere il/i file nell'albero di lavoro al VCS |
git rm |
rimuovere il/i file nell'albero di lavoro dal VCS |
git commit -a |
fare il commit dei cambiamenti all'archivio locale |
git push |
aggiornare l'archivio remoto con l'archivio locale |
git status |
visualizza lo stato dell'albero di lavoro dal VCS |
git diff |
diff archivio_diriferimento albero_di_lavoro |
git repack -a -d; git prune |
reimpacchetta l'archivio locale in un singolo pacchetto |
gitk |
visualizzazione GUI dell'albero dell'archivio VCS |
Tabella 10.13. Elenco di pacchetti e comandi relativi a Git
pacchetto | popcon | dimensione | comando | descrizione |
---|---|---|---|---|
git-doc
|
I:14 | 12063 | N/D | documentazione ufficiale per Git |
gitmagic
|
I:1 | 721 | N/D | "Git Magic", una guida per Git più semplice da capire |
git
|
V:312, I:494 | 36515 | git (7) |
Git, il sistema di controllo delle revisioni veloce, scalabile e distribuito |
gitk
|
V:5, I:41 | 1749 | gitk (1) |
browser degli archivi Git con interfaccia utente grafica e cronologia |
git-gui
|
V:1, I:23 | 2343 | git-gui (1) |
interfaccia utente grafica per Git (senza cronologia) |
git-email
|
V:0, I:11 | 993 | git-send-email (1) |
invia una raccolta di patch come messaggio di posta da Git |
git-buildpackage
|
V:1, I:11 | 4187 | git-buildpackage (1) |
automatizza la creazione di pacchetti Debian con Git |
dgit
|
V:0, I:1 | 496 | dgit (1) |
git interoperability with the Debian archive |
imediff
|
V:0, I:0 | 170 | git-ime (1) |
interactive git commit split helper tool |
stgit
|
V:0, I:0 | 603 | stg (1) |
quilt sopra a git (Python) |
![]() |
Attenzione |
---|---|
A partire dall'inizio del 2006, l'invocazione diretta, dalla riga di
comando, di un sottocomando di |
![]() |
Suggerimento |
---|---|
With |
![]() |
Suggerimento |
---|---|
When you want to go back to the clean working directory without loosing the
current state of the working directory, you can use " |
![]() |
Suggerimento |
---|---|
If there is a executable file |
![]() |
Suggerimento |
---|---|
GUI tools such as |
Si può registrare manualmente la cronologia della configurazione usando
strumenti Git. Quello che segue è un semplice
esempio che insegna a registrare il contenuto di
"/etc/apt/
".
$ cd /etc/apt/ $ sudo git init $ sudo chmod 700 .git $ sudo git add . $ sudo git commit -a
Fare il commit della configurazione con una descrizione.
Modificare i file di configurazione
$ cd /etc/apt/ $ sudo git commit -a
Fare il commit della configurazione con una descrizione e andare avanti con la propria vita.
$ cd /etc/apt/ $ sudo gitk --all
Si avrà una completa cronologia della configurazione.
![]() |
Nota |
---|---|
Per lavorare con tutti i tipi di permessi dei dati di configurazione è
necessario |
![]() |
Nota |
---|---|
Il comando " |
![]() |
Suggerimento |
---|---|
Per l'impostazione di un sistema di registrazione della configurazione più
completo, guardare il pacchetto |
Vedere la documentazione seguente.
pagina man: git(1)
(/usr/share/doc/git-doc/git.html
)
Manuale utente di Git
(/usr/share/doc/git-doc/user-manual.html
)
Un tutorial introduttivo su
git (/usr/share/doc/git-doc/gittutorial.html
)
Un tutorial introduttivo su
git: parte seconda
(/usr/share/doc/git-doc/gittutorial-2.html
)
Everyday GIT With 20 Commands
Or So (/usr/share/doc/git-doc/giteveryday.html
)
Git Magic
(/usr/share/doc/gitmagic/html/index.html
)
I comandi git-gui
(1) e gitk
(1) rendono
l'uso di Git molto semplice.
![]() |
Avvertimento |
---|---|
Non usare stringhe per etichette contenenti spazi, anche se alcuni strumenti
come |