Table des matières
Des outils et astuces pour gérer les données binaires ou textuelles sur le système sont décrits.
Avertissement | |
---|---|
Il ne faut pas accéder de manière non coordonnée en écriture à des
périphériques et des fichiers à haut trafic depuis différents processus pour
éviter une compétition d’accès (« race
condition ». Pour l’éviter, on peut utiliser les mécanismes de
verrouillage de fichier (« File
locking » en utilisant |
La sécurité des données et leur partage contrôlé présentent plusieurs aspects.
La création d’une archive des données
L’accès à un stockage distant
La duplication
Le suivi de l’historique des modifications
La facilité de partage des données
La prévention de l’accès non autorisé aux données
La détection des modifications de fichier non autorisées
Cela peut être réalisé avec certaines combinaisons d’outils.
Outils d’archivage et de compression
Outils de copie et de synchronisation
Systèmes de fichiers par le réseau
Supports d’enregistrement amovibles
L’interpréteur de commandes sécurisé
Le système d’authentification
Outils de système de contrôle de version
Outils de hachage et de chiffrement
Voici un résumé des outils d’archivage et de compression disponible sur le système Debian :
Tableau 10.1. Liste des outils d’archivage et de compression
paquet | popcon | taille | extension | commande | commentaire |
---|---|---|---|---|---|
tar
|
V:920, I:999 | 3144 | .tar |
tar (1) |
archiveur standard (standard de fait) |
cpio
|
V:416, I:998 | 1141 | .cpio |
cpio (1) |
archiveur de style UNIX System V, utiliser avec find (1) |
binutils
|
V:160, I:642 | 109 | .ar |
ar (1) |
archiveur pour la création de bibliothèques statiques |
fastjar
|
V:1, I:19 | 183 | .jar |
fastjar (1) |
archiveur pour Java (semblable à zip) |
pax
|
V:10, I:18 | 170 | .pax |
pax (1) |
nouvel archiveur standard POSIX, compromis entre tar et
cpio |
gzip
|
V:882, I:999 | 252 | .gz |
gzip (1), zcat (1), … |
utilitaire de compression GNU LZ77 (standard de fait) |
bzip2
|
V:161, I:970 | 121 | .bz2 |
bzip2 (1), bzcat (1), … |
utilitaire de transformée
par tri de blocs de Burrows-Wheeler permettant un taux de
compression plus élevé que gzip (1) (plus lent que
gzip avec une syntaxe similaire) |
lzma
|
V:1, I:20 | 149 | .lzma |
lzma (1) |
LZMA compression utility with higher compression
ratio than gzip (1) (deprecated) |
xz-utils
|
V:432, I:979 | 1216 | .xz |
xz (1), xzdec (1), … |
utilitaire de compression XZ avec un plus haut
taux de compression que bzip2 (1) (plus lent que
gzip mais plus rapide que bzip2 ; le
remplaçant de LZMA utilitaire de compression) |
zstd
|
V:34, I:91 | 2027 | .zstd |
zstd (1), zstdcat (1), … |
Zstandard fast lossless compression utility |
p7zip
|
V:111, I:454 | 987 | .7z |
7zr (1), p7zip (1) |
archiveur de fichiers 7-Zip avec un haut taux de compression (compression LZMA) |
p7zip-full
|
V:116, I:460 | 4664 | .7z |
7z (1), 7za (1) |
archiveur de fichiers 7-Zip avec un haut taux de compression (compression LZMA et autres) |
lzop
|
V:13, I:133 | 164 | .lzo |
lzop (1) |
utilitaire de compression LZO avec de plus hautes
vitesses de compression et de décompression que gzip (1)
(plus faible taux de compression que gzip avec une
syntaxe similaire) |
zip
|
V:47, I:398 | 623 | .zip |
zip (1) |
InfoZIP : outil d’archive et de compression DOS |
unzip
|
V:100, I:772 | 385 | .zip |
unzip (1) |
InfoZIP : outil de désarchivage et de décompression DOS |
Avertissement | |
---|---|
Ne positionnez par la variable « |
L’archive tar
(1) utilise l’extension de fichier
« .tgz
» ou
« .tar.gz
».
L’archive tar
(1) avec compression xz utilise l’extension
de fichier « .txz
» ou
« .tar.xz
».
La méthode de compression habituelle des outils FOSS tels que tar
(1) a été modifiée
de la manière suivante : gzip
→
bzip2
→ xz
cp
(1), scp
(1) et
tar
(1) peuvent avoir certaines limitations pour des
fichiers spéciaux. cpio
(1) est plus souple.
cpio
(1) est conçu pour être utilisé avec
find
(1) et d’autres commandes et est adapté à la création
de scripts de sauvegarde car la partie correspondant à la sélection de
fichier du script peut être testée indépendamment.
La structure interne des fichiers de données de Libreoffice est composée de
fichiers « .jar
» qui peut être ouvert
également par unzip
.
The de-facto cross platform archive tool is zip
. Use it
as "zip -rX
" to attain the maximum compatibility. Use
also the "-s
" option, if the maximum file size matters.
Voici une liste d’outils simples de copie et de sauvegarde sur le système Debian :
Tableau 10.2. Liste des outils de copie et de synchronisation
paquet | popcon | taille | outil | fonction |
---|---|---|---|---|
coreutils
|
V:908, I:999 | 18062 | GNU cp | copier localement des fichiers et répertoires (« -a » pour récursif) |
openssh-client
|
V:856, I:997 | 5609 | scp | copier à distance des fichiers et des répertoires (client,
« -r » pour récursif) |
openssh-server
|
V:740, I:841 | 1867 | sshd | copier à distance des fichiers et des répertoires (serveur distant) |
rsync
|
V:285, I:567 | 776 | synchronisation et sauvegarde distantes unidirectionnelles | |
unison
|
V:3, I:15 | 14 | synchronisation et sauvegarde distantes bidirectionnelles |
Copier des fichiers avec rsync
(8) offres des
fonctionnalités plus riches que les autres méthodes.
algorithme de transfert delta qui n’envoie que la différence entre les fichiers source et les fichiers existants sur la destination
algorithme de vérification rapide (par défaut) recherchant les fichiers dont la taille ou l’heure de dernière modification a été modifiée
Les options « --exclude
» et
« --exclude-from
» sont semblables à celles de
tar
(1)
La syntaxe « un slash en fin de répertoire source » qui évite la création d’un niveau de répertoire supplémentaire à la destination.
Astuce | |
---|---|
Les outils de système de contrôle de version (VCS) de Tableau 10.14, « List of other version control system tools » peuvent fonctionner comme outils de synchronisation et de copie multi-voies. |
Voici quelques manières d’archiver et de désarchiver le contenu entier du
répertoire « ./source
» en utilisant différents
outils.
GNU tar
(1) :
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
ou encore, comme suit :
$ 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
Voici quelques manières d’archiver et de désarchiver le contenu entier du
répertoire « ./source
» en utilisant différents
outils.
Copie locale du répertoire « ./source
» →
répertoire « /dest
»
Faire le copie distante du répertoire
« ./source
» de la machine locale → répertoire
« /dest
» situé sur la machine
« user@host.dom
»
rsync
(8) :
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
Vous pouvez, en remplacement, utiliser la syntaxe « un slash en fin du répertoire source ».
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
ou encore, comme suit :
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest
GNU cp
(1) et 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
Vous pouvez remplacer « .
» par
« truc
» dans tous les exemples comportant
« .
» pour copier les fichiers du répertoire
« ./source/truc
» vers le répertoire
« /dest/truc
».
Vous pouvez remplacer « .
» par le chemin
absolu « /chemin/vers/source/truc
» dans tous
les exemples comportant « .
» pour éviter
« cd ./source;
». Cela permet de copier les
fichiers vers différents emplacements selon les outils utilisés de la
manière suivante :
« /dest/truc
» : rsync
(8), GNU
cp
(1) et scp
(1)
« /dest/chemin/vers/source/truc
»: GNU
tar
(1) et cpio
(1)
Astuce | |
---|---|
|
find
(1) est utilisé pour la sélection de fichiers pour
les commandes d’archive et de copie (consultez Section 10.1.3, « Idiomes pour les archives » et Section 10.1.4, « Idiomes pour la copie ») ou pour xargs
(1)
(consultez Section 9.4.9, « Répéter une commande en bouclant entre des fichiers »). Cela
peut être amélioré en utilisant ces paramètres de commande.
La syntaxe de base de find
(1) peut être résumée comme
suit :
Ses paramètres conditionnels sont évalués de gauche à droite.
L’évaluation s’arrête lors que son résultat est déterminé.
Le « OU logique » (indiqué par
« -o
» entre les éléments conditionnels) a une
plus faible priorité que le « ET
logique » (indiqué par « -a
» ou rien
entre éléments conditionnels).
Le « NON logique » (indiqué par
« !
» avant un élément conditionnel) a une
priorité plus élevée que le « ET
logique ».
« -prune
» retourne toujours un VRAI logique et, si c’est un répertoire, la
recherche de fichier est arrêtée au-delà de ce point.
« -name
» correspond à la base du nom de
fichier avec les motifs génériques de l’interpréteur de commandes (voir
Section 1.5.6, « Motifs génériques (« glob ») de l’interpréteur de commandes ») mais il correspond aussi à son
« .
» de début avec des métacaractères comme
« *
» et « ?
»
(nouvelle fonctionnalité POSIX).
« -regex
» correspond au chemin complet par
défaut dans le style BRE Emacs (consultez
Section 1.6.2, « Expressions rationnelles »).
« -size
» correspond au fichier en se basant
sur la taille du fichier (valeur précédée de
« +
» pour plus grand et précédée de
« -
» pour plus petit)
« -newer
» correspond au fichier plus récent
que celui indiqué comme paramètre.
« -print0
» retourne toujours la valeur logique
VRAI et affiche sur la sortie standard le
nom de fichier en entier (terminé par le
caractère null).
find
(1) est souvent utilisé dans un style idiomatique
comme ce qui suit :
# 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
Cela signifie que les actions suivantes doivent être effectuées :
rechercher tous les fichiers en partant de
« /chemin/vers
» ;
limiter globalement sa recherche à l’intérieur du système de fichiers et utiliser ERE (consultez Section 1.6.2, « Expressions rationnelles ») ;
exclure les fichiers correspondant à l’expression rationnelle de
« .*\.cpio
» ou
« .*~
» de la recherche en arrêtant le
traitement ;
exclure les répertoires qui correspondent à l’expression rationnelle de
« .*/\.git
» de la recherche en arrêtant le
traitement ;
exclure les fichiers plus gros que 99 Megaoctets (unités de 1048576 octets) de la recherche en arrêtant le traitement ;
Afficher les noms de fichiers qui satisfont aux conditions de recherche
ci-dessus et qui sont plus récents que
« /chemin/vers/horodatage
».
Remarquez l’utilisation idiomatique de « -prune
-o
» pour exclure les fichiers dans l’exemple ci-dessus.
Note | |
---|---|
Pour les systèmes UNIX-like autre que
Debian, certaines options peuvent ne pas être prises en compte par
|
Lors du choix d’un support d’enregistrement de données informatiques destiné à l’archivage de données importantes, il faut faire attention à leurs limitations. Pour des petites sauvegardes de données personnelles, j’utilise des CD-R et des DVD-R provenant d’une grande marque et je les range dans un endroit frais, à l’ombre, sec et propre. (Les supports d’archive sur bande semblent être populaires pour les utilisations professionnelles).
Note | |
---|---|
Un coffre-fort anti-feu est destiné aux documents sur papier. La plupart des supports de stockage de données informatiques ont une tolérance en température inférieure à celle du papier. J’utilise en général plusieurs copies chiffrées stockées dans différents endroits sûrs. |
Durées de vie optimistes des moyens d’archivage trouvées sur le net (la plupart à partir d’informations des constructeurs).
100 ans et plus : papier non acide et encre
100 ans : stockage optique (CD/DVD, CD/DVD-R)
30 ans : supports magnétiques (bande, disquette)
20 ans : disque optique à changement de phase (CD-RW)
Cela ne prend pas en compte les défaillances mécaniques dues aux manipulations, etc.
Nombre de cycles d’écriture optimistes des moyens d’archivage trouvées sur le net (la plupart à partir d’informations des constructeurs).
plus de 250 000 : disque dur
plus de 10 000 cycles : mémoires Flash
1000 cycles : CD/DVD-RW
1 cycle : CD/DVD-R, papier
Attention | |
---|---|
Ces chiffres de durée de vie et de nombre de cycles ne devront pas être utilisés pour des décisions concernant l’enregistrement de données critiques. Veuillez consulter les informations spécifiques au produit fournies par le constructeur. |
Astuce | |
---|---|
Comme les CD/DVD-R et le papier n’ont qu’un cycle d’écriture de 1, ils évitent de manière inhérente le risque de perte de données par écrasement. C’est un avantage ! |
Astuce | |
---|---|
Si vous devez faire des sauvegardes fréquentes et rapides d’un gros volume de données, un disque dur sur une liaison réseau à haute vitesse peut être la seule option réaliste. |
Les périphériques d’enregistrement amovibles possibles sont les suivants.
Appareil photographique numérique
Lecteur de musique numérique
Ils peuvent être connectés à l’aide de n’importe quel moyen suivant.
Les environnements de bureau modernes comme GNOME et KDE peuvent monter ces
périphériques amovibles automatiquement sans entrée correspondante dans
« /etc/fstab
»
Astuce | |
---|---|
Les périphériques montés automatiquement pourraient avoir l’option de
montage « |
Astuce | |
---|---|
Le montage automatique sous les environnements de bureau modernes ne se
produit que lorsque ces périphériques amovibles ne se trouvent pas dans
« |
Mount point under modern desktop environment is chosen as
"/media/username/disk_label
" which
can be customized by the following.
mlabel
(1) pour le système de fichiers FAT ;
genisoimage
(1) avec l’option
« -V
» pour le système de fichiers
ISO9660 ;
tune2fs
(1) avec l’option
« -L
» pour le système de fichiers ext2, ext3
ou ext4.
Astuce | |
---|---|
Le choix du codage doit être fourni comme option de montage (consultez Section 8.1.3, « Coder les noms de fichiers »). |
Astuce | |
---|---|
L'utilisation d'une interface graphique pour démonter un système de fichiers
peut supprimer son point de montage créé dynamiquement tel que
« |
Lors du partage de données avec d’autres systèmes à l’aide de périphériques de stockage amovibles, vous devez les formatez avec un système de fichiers pris en charge par les deux systèmes. Voici une liste de choix de systèmes de fichiers :
Tableau 10.3. Liste de choix de systèmes de fichiers pour des périphériques amovibles avec des scénarios typiques d’utilisation
filesystem name | typical usage scenario |
---|---|
FAT12 | partage de données sur disquettes entre plateformes (<32Mio) |
FAT16 | partage entre plateformes de données sur des périphériques semblables à des disques durs de faible capacité (<2Gio) |
FAT32 | partage entre plateformes de données sur périphériques semblables à des disques durs de grande capacité (<8Tio, pris en charge par plus récent que 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 | partage entre plateformes de données sur périphériques semblables à des disques durs de grande capacité (pris en charge de manière native par MS Windows NT et versions plus récentes; et pris en charge par NTFS-3G par l’intermédiaire de FUSE sous Linux) |
ISO9660 | partage entre plateformes de données sur CD-R et DVD+/-R |
UDF | écriture incrémentale de CD-R et de DVD+/-R (nouveau) |
MINIX | enregistrement efficace en matière d’espace disque de fichiers de données unix sur disquette |
ext2 | partage de données sur disque dur avec les anciens systèmes Linux |
ext3 | partage de données sur disque dur avec les anciens systèmes Linux |
ext4 | partage de données sur disque dur avec les systèmes Linux actuels |
btrfs | sharing of data on the hard disk like device with current Linux systems with read-only snapshots |
Astuce | |
---|---|
Consultez Section 9.9.1, « Chiffrement des disques amovibles à l’aide de dm-crypt/LUKS » pour le partage de données entre plateformes en utilisant le chiffrement au niveau du périphérique. |
Le système de fichiers FAT est pris en charge par la plupart des systèmes d’exploitation modernes et est assez utile pour l'échange des données par l’intermédiaire de supports du type disque dur amovible.
Pour le formatage de périphériques de type disque dur amovible pour l’échange de données entre plateformes avec un système de fichiers FAT, ce qui suit peut être un choix sûr :
les partitionner avec fdisk
(8),
cfdisk
(8) ou parted
(8) (consultez
Section 9.6.2, « Configuration de la partition du disque ») en une seule partition
primaire et la marquer comme suit :
type « 6 » pour FAT16 pour les supports faisant moins de 2Go.
type « c » pour FAT32 (LBA) pour les supports plus gros.
formater la partition primaire avec mkfs.vfat
(8) comme
suit :
simplement son nom de périphérique, par exemple
« /dev/sda1
», pour la FAT16
L’option explicite et le nom de périphérique, par exemple
« -F 32 /dev/sda1
», pour la FAT32
Lors de l’utilisation des systèmes de fichiers FAT ou ISO9660 pour le partage de données ce qui suit sera une précaution sûre :
Archiver d’abord les fichiers dans un fichier d’archive en utilisant
tar
(1) ou cpio
(1) afin de conserver
les noms de fichiers longs, les permissions de fichiers d’origine d’UNIX et
les informations de propriétaire.
Découper le fichier d’archive en éléments de moins de 2 Gio à l’aide de la
commande split
(1) afin de le protéger contre les
limitations de taille de fichier.
Chiffrer le fichier d’archive afin de sécuriser son contenu contre un accès non autorisé.
Note | |
---|---|
La taille maximum d’un fichier FAT, par conception, est de |
Note | |
---|---|
Microsoft lui-même ne recommande pas l’utilisation de FAT pour des disques ou des partitions de plus de 200 Mo. Microsoft met en avant ces limitations comme une utilisation inefficace de l’espace disque dans ses « Informations générales sur les systèmes de fichiers FAT, HPFS et NTFS ». Bien sûr, on peut normalement utiliser le système de fichiers ext4 pour Linux. |
Astuce | |
---|---|
Pour davantage d’informations sur les systèmes de fichiers et les accès aux systèmes de fichiers, veuillez consulter « Filesystems HOWTO ». |
Lors du partage de données avec d’autres systèmes au travers du réseau, vous devrez utiliser un service commun. Voici quelques éléments :
Tableau 10.4. Liste des services réseau à choisir avec le scénario typique d’utilisation
service réseau | description d’un scénario typique d’utilisation |
---|---|
SMB/CIFS système de fichiers monté avec Samba | partage de fichiers par l’intermédiaire de « Microsoft Windows
Network », consultez smb.conf (5) et le HOWTO et guide de référence
officiel de Samba 3.x.x ou le paquet samba-doc |
système de fichiers monté au travers du réseau NFS avec le noyau Linux | partager des fichiers par « UNIX/Linux Network », consultez
exports (5) et Linux
NFS-HOWTO |
service HTTP | partager des fichiers entre client et serveur web |
service HTTPS | partager des fichiers entre le client et le serveur web avec un chiffrement Secure Sockets Layer (SSL) ou Transport Layer Security (TLS) |
service FTP | partager des fichiers entre serveur et client FTP |
Bien que ces systèmes de fichiers montés au travers du réseau et les méthodes de transfert au travers du réseau soient assez pratiques pour partager des données, elles peuvent être non sûres. Leur connexion réseau doit être sécurisée par ce qui suit :
consultez aussi Section 6.5, « Autres serveurs d’applications réseau » et Section 6.6, « Autres clients d’applications réseau ».
Nous savons tous que les ordinateurs sont parfois victimes de pannes ou que des erreurs humaines provoquent des dommages au système et aux données. Les opérations de sauvegarde et de restauration sont les parties essentielles d’une administration système réussie. Vous serez victime, un jour ou l’autre, de tous les modes de défaillance possibles.
Astuce | |
---|---|
Mettez en place un système de sauvegardes simple et faites une sauvegarde fréquente de votre système. Avoir des données de sauvegarde est plus important que la qualité technique de votre méthode de sauvegarde. |
Il y a 3 facteurs-clé qui permettent de définir une méthode pratique de sauvegarde et de restauration.
Ce qu’il faut sauvegarder et restaurer :
les fichiers que vous avez directement créés : données de
« ~/
» ;
les fichiers de données créés par les applications que vous utilisez :
données de « /var/
» (sauf
« /var/cache/
»,
« /var/run/
» et
« /var/tmp/
») :
les fichiers de configuration du système : fichiers de
« /etc/
» ;
Local programs: data in "/usr/local/
" or
"/opt/
"
informations concernant l’installation du système : un mémo en texte concernant les étapes-clés ((partition, …) ;
un jeu de données testé : confirmé par des opérations de restauration expérimentales réalisées à l’avance.
Cron job as a user process: files in
"/var/spool/cron/crontabs
" directory and restart
cron
(8). See Section 9.4.14, « Planifier des tâches qui s’exécutent régulièrement » for cron
(8) and
crontab
(1).
Systemd timer jobs as user processes: files in
"~/.config/systemd/user
" directory. See
systemd.timer
(5) and
systemd.service
(5).
Autostart jobs as user processes: files in
"~/.config/autostart
" directory. See Desktop Application Autostart
Specification.
Comment sauvegarder et restaurer :
entreposer les données de manière sûre : protection des données contre la réécriture et les défaillances du système ;
sauvegardes fréquentes ! sauvegardes planifiées ;
sauvegardes redondantes : duplication (miroir) des données ;
processus indéréglable : sauvegarde facile en une seule commande.
Risques et coûts :
Risk of data when lost
Data should be at least on different disk partitions preferably on different disks and machines to withstand the filesystem corruption. Important data are best stored on a read-only filesystem. [4]
Risk of data when breached
Sensitive identity data such as
"/etc/ssh/ssh_host_*_key
",
"~/.gnupg/*
", "~/.ssh/*
",
"~/.local/share/keyrings/*
",
"/etc/passwd
", "/etc/shadow
",
"popularity-contest.conf
",
"/etc/ppp/pap-secrets
", and
"/etc/exim4/passwd.client
" should be backed up as
encrypted. [5] (See Section 9.9, « Astuces de chiffrement des données ».)
Never hard code system login password nor decryption passphrase in any script even on any trusted system. (See Section 10.3.6, « Password keyring ».)
mode de défaillance avec leur probabilité.
Hardware (especially HDD) will break
Filesystem may be corrupted and data in it may be lost
Remote storage system can't be trusted for security breaches
Weak password protection can be easily compromised
File permission system may be compromised
ressources nécessaires pour effectuer les sauvegardes : humaines, matérielles, logicielles, …
Automatic scheduled backup with cron job or systemd timer job
Note | |
---|---|
Ne sauvegardez pas le contenu des pseudo systèmes de fichiers se trouvant
dans |
Note | |
---|---|
Il faudra peut-être arrêter certains démons d’applications comme le MTA (consultez Section 6.2.4, « Agent de transport de courrier électronique (« MTA ») ») lors de la sauvegarde des données. |
Voici une liste d’utilitaires de sauvegarde notables disponibles sur le système Debian :
Tableau 10.5. Liste de suites d’utilitaires de sauvegarde
paquet | popcon | taille | description |
---|---|---|---|
dump
|
V:1, I:5 | 351 | BSD 4.4 dump (8) et
restore (8) pour les systèmes de fichiers ext2/ext3/ext4. |
xfsdump
|
V:0, I:8 | 848 | sauvegarder et restaurer avec xfsdump (8) et
xfsrestore (8) pour le système de fichiers XFS sous GNU/Linux et IRIX |
backupninja
|
V:3, I:4 | 367 | système de sauvegarde meta-backup léger et extensible |
bacula-common
|
V:10, I:12 | 2120 | Bacula : sauvegarde, restauration et vérification par le réseau - fichiers communs |
bacula-client
|
I:3 | 183 | Bacula : sauvegarde, restauration et vérification par le réseau - métapaquet du client |
bacula-console
|
V:0, I:4 | 104 | Bacula : sauvegarde, restauration et vérification par le réseau - console en mode texte |
bacula-server
|
I:1 | 183 | Bacula : sauvegarde, restauration et vérification par le réseau - métapaquet du serveur |
amanda-common
|
V:0, I:2 | 9937 | Amanda : Advanced Maryland Automatic Network Disk Archiver (Libs). (Archiveur de disque par le réseau de Maryland avancé et automatique. |
amanda-client
|
V:0, I:2 | 1085 | Amanda : Advanced Maryland Automatic Network Disk Archiver (Client) |
amanda-server
|
V:0, I:0 | 1077 | Amanda : Advanced Maryland Automatic Network Disk Archiver (Serveur) |
backup-manager
|
V:0, I:1 | 571 | outil de sauvegarde en ligne de commandes |
backup2l
|
V:0, I:0 | 115 | outil de sauvegarde et restauration de faible maintenance pour des supports pouvant être montés (basé sur disque) |
backuppc
|
V:2, I:2 | 3178 | BackupPC est un système de hautes performances pour effectuer la sauvegarde de PC au niveau de l’entreprise (basé sur disques) |
duplicity
|
V:19, I:40 | 1859 | sauvegarde incrémentale (distante) |
flexbackup
|
V:0, I:0 | 243 | sauvegarde incrémentale (distante) |
rdiff-backup
|
V:5, I:12 | 1162 | sauvegarde incrémentale (distante) |
restic
|
V:2, I:5 | 21593 | sauvegarde incrémentale (distante) |
slbackup
|
V:0, I:0 | 151 | sauvegarde incrémentale (distante) |
Les outils de sauvegarde ont chacun des objectifs particuliers.
Mondo Rescue est un système de sauvegarde qui facilite la restauration rapide d’un système complet depuis de CD/DVD etc. sans passer par le processus normal d’installation d’un système.
Bacula, Amanda et BackupPC sont des suites de sauvegardes ayant des fonctionnalités avancées qui sont orientées vers les sauvegardes fréquentes au travers du réseau.
Regular backups of user data can be realized by a simple script (Section 10.2.3, « Personal backup »).
Les outils de base décrits dans Section 10.1.1, « Outils d’archivage et de compression » et Section 10.1.2, « Outils de copie et de synchronisation » peuvent être utilisés pour faciliter la sauvegarde du système au moyen de scripts personnalisés. De tels scripts peuvent être améliorés comme suit :
Le paquet restic
permet les sauvegardes incrémentales
(distantes) .
le paquet rdiff-backup
permet les sauvegardes
incrémentales (distantes) ;
le paquet dump
facilite l’archivage et la restauration
d’un système de fichiers entier de manière incrémentielle et efficace.
Astuce | |
---|---|
Consultez les fichiers dans
« |
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
. For data encryption, disk image is created by
fallocate
(1) and configured with
cryptsetup
(8).
Astuce | |
---|---|
Vous pouvez récupérer les données de configuration de debconf avec
« |
L’infrastructure de sécurité des données est fournie par la combinaison d’un outil de chiffrement des données, d’un outil de condensé de messages et d’un outil de signature.
Tableau 10.6. Liste des outils d’une infrastructure de sécurité des données
paquet | popcon | taille | commande | description |
---|---|---|---|---|
gnupg
|
V:551, I:918 | 885 | gpg (1) |
GNU Privacy Guard - outil de signature et de chiffrement OpenPGP |
gpgv
|
V:897, I:999 | 917 | gpgv (1) |
GNU Privacy Guard - outil de vérification de signature |
paperkey
|
V:1, I:13 | 58 | paperkey (1) |
extraire seulement l’information secrète de clés secrètes OpenPGP |
cryptsetup
|
V:30, I:77 | 406 | cryptsetup (8), … |
utilities for dm-crypt block device encryption supporting LUKS |
coreutils
|
V:908, I:999 | 18062 | md5sum (1) |
calculer et vérifier un condensé MD5 de message |
coreutils
|
V:908, I:999 | 18062 | sha1sum (1) |
calculer et vérifier un condensé SHA1 de message |
openssl
|
V:841, I:995 | 2269 | openssl (1ssl) |
calculer un condensé de message avec « openssl
dgst » (OpenSSL) |
libsecret-tools
|
V:1, I:12 | 44 | secret-tool (1) |
store and retrieve passwords (CLI) |
seahorse
|
V:72, I:248 | 7987 | seahorse (1) |
key management tool (GNOME) |
See Section 9.9, « Astuces de chiffrement des données » on dm-crypt and fscrypt which implement automatic data encryption infrastructure via Linux kernel modules.
Voici les commandes de GNU Privacy Guard pour la gestion de base des clés :
Tableau 10.7. Liste des commandes de GNU Privacy Guard pour la gestion des clés
commande | description |
---|---|
gpg --gen-key |
générer une nouvelle clé |
gpg --gen-revoke ID_de_mon_utilisateur |
générer une clé de révocation pour ID_de_mon_utilisateur |
gpg --edit-key ID_utilisateur |
éditer la clé de manière interactive, « help » pour obtenir de l’aide |
gpg -o fichier --export |
exporter toutes les clés vers fichier |
gpg --import fichier |
importer toutes les clés depuis fichier |
gpg --send-keys ID_utilisateur |
envoyer la clé de ID_utilisateur vers le serveur de clés |
gpg --recv-keys ID_utilisateur |
recevoir la clé de ID_utilisateur du serveur de clés |
gpg --list-keys ID_utilisateur |
afficher la liste des clés de ID_utilisateur |
gpg --list-sigs ID_utilisateur |
afficher la liste des signatures de ID_utilisateur |
gpg --check-sigs ID_utilisateur |
vérifier la signature de ID_utilisateur |
gpg --fingerprint ID_utilisateur |
vérifier l’empreinte de ID_utilisateur |
gpg --refresh-keys |
mettre à jour le porte-clé local |
Voici la signification du code de confiance
Tableau 10.8. Liste de la signification des codes de confiance
code | description de la confiance |
---|---|
- |
pas de confiance d’utilisateur assignée/pas encore calculée |
e |
échec du calcul de la confiance |
q |
pas assez d’informations pour le calcul |
n |
ne jamais faire confiance à cette clé |
m |
confiance marginale |
f |
confiance complète |
u |
confiance ultime |
Ce qui suit permet d’envoyer ma clé
« 1DD8D791
» vers le serveur de clé populaire
« hkp://keys.gnupg.net
» :
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791
Une bonne configuration de serveur de clés dans
« ~/.gnupg/gpg.conf
» (ou à l’ancien
emplacement « ~/.gnupg/options
») contient ce
qui suit :
keyserver hkp://keys.gnupg.net
Ce qui suit obtient les clés inconnues du serveur de clés :
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\ cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
Il y avait un bogue dans OpenPGP
Public Key Server (pre version 0.9.6) qui corrompait les clés ayant
plus de 2 sous-clés. Le paquet du serveur gnupg
(>1.2.1-2) peut gérer ces sous-clés corrompues. Consultez
gpg
(1) sous l’option
« --repair-pks-subkey-bug
».
Voici des exemples d’utilisation des commandes de GNU Privacy Guard sur des fichiers :
Tableau 10.9. Liste des commandes de GNU Privacy Guard sur des fichiers
commande | description |
---|---|
gpg -a -s fichier |
signer « fichier » dans un fichier ASCII blindé fichier.asc |
gpg --armor --sign fichier |
, , |
gpg --clearsign fichier |
signer un fichier en clair |
gpg --clearsign fichier|mail truc@example.org |
envoyer un message signé en clair à truc@example.org |
gpg --clearsign --not-dash-escaped fichier_rustine |
signer en clair un fichier_rustine |
gpg --verify fichier |
vérifier fichier signé en texte clair |
gpg -o fichier.sig -b fichier |
créer une signature détachée |
gpg -o fichier.sig --detach-sig fichier |
, , |
gpg --verify fichier.sig fichier |
vérifier un fichier avec fichier.sig |
gpg -o fichier_chiffré.gpg -r nom -e fichier |
chiffrement par clé publique destiné au « nom » depuis le « fichier » vers « fichier_chiffré.gpg » binaire |
gpg -o fichier_chiffré.gpg --recipient nom --encrypt
fichier |
, , |
gpg -o fichier_chiffré.asc -a -r nom -e fichier |
chiffrement par clé publique destiné au « nom » depuis le « fichier » vers le fichier ASCII blindé « fichier_chiffré.asc » |
gpg -o fichier_chiffré.gpg -c fichier |
chiffrement symétrique depuis « fichier » vers « fichier_chiffré.gpg » |
gpg -o fichier_chiffré.gpg --symmetric fichier |
, , |
gpg -o fichier_chiffré.asc -a -c fichier |
chiffrement symétrique prévu destiné au « nom » depuis le « fichier » vers le fichier ASCII blindé « fichier_chiffré.asc » |
gpg -o fichier -d fichier_crypt.gpg -r nom |
déchiffrement |
gpg -o fichier --decrypt fichier_chiffré.gpg |
, , |
Ajoutez ce qui suit à « ~/.muttrc
» afin
d’éviter que GnuPG qui est lent ne démarre automatiquement, tout en
permettant son utilisation en entrant « S
»
depuis l’index du menu :
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
".[6]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
md5sum
(1) fournit un utilitaire permettant de créer un
fichier de résumé en utilisant la méthode se trouvant dans rfc1321 et en l’utilisant pour vérifier chaque
fichier qu’il contient.
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
Note | |
---|---|
Le calcule de somme de contrôle MD5 consomme moins de ressources processeur que celles utilisées pour le chiffrement des signatures en utilisant GNU Privacy Guard (GnuPG). Habituellement, pour s’assurer de l’intégrité des données, seul le résumé de plus haut niveau est signé par chiffrement. |
On GNOME system, the GUI tool seahorse
(1) manages
passwords and stores them securely in the keyring
~/.local/share/keyrings/*
.
secret-tool
(1) can store password to the keyring from the
command line.
Let's store passphrase used for LUKS/dm-crypt encrypted disk image
$ secret-tool store --label='LUKS passphrase for disk.img' LUKS my_disk.img Password: ********
This stored password can be retrieved and fed to other programs, e.g.,
cryptsetup
(8).
$ secret-tool lookup LUKS my_disk.img | \ cryptsetup open disk.img disk_img --type luks --keyring - $ sudo mount /dev/mapper/disk_img /mnt
Astuce | |
---|---|
Whenever you need to provide password in a script, use
|
Il existe de nombreux outils pour fusionner du code source. Les commandes qui suivent ont attiré mon attention :
Tableau 10.10. Liste d’outils destinés à fusionner du code source
paquet | popcon | taille | commande | description |
---|---|---|---|---|
patch
|
V:90, I:702 | 248 | patch (1) |
appliquer un fichier de différences (« diff ») à un original |
vim
|
V:97, I:390 | 3570 | vimdiff (1) |
comparer deux fichiers côte à côte dans vim |
imediff
|
V:0, I:0 | 169 | imediff (1) |
interactive full screen 2/3-way merge tool |
meld
|
V:11, I:34 | 3500 | meld (1) |
comparer et fusionner des fichiers (GTK) |
wiggle
|
V:0, I:0 | 174 | wiggle (1) |
appliquer les rustines rejetées |
diffutils
|
V:876, I:995 | 1597 | diff (1) |
comparer des fichiers ligne à ligne |
diffutils
|
V:876, I:995 | 1597 | diff3 (1) |
comparer et fusionner trois fichiers ligne par ligne |
quilt
|
V:3, I:26 | 773 | quilt (1) |
gérer une série de rustines |
wdiff
|
V:8, I:59 | 648 | wdiff (1) |
afficher les différences de mots entre deux fichiers texte |
diffstat
|
V:12, I:127 | 74 | diffstat (1) |
afficher un histogramme des modifications apportées par le fichier de différences |
patchutils
|
V:14, I:125 | 232 | combinediff (1) |
créer une rustine (patch) cumulative à partir de deux rustines incrémentales |
patchutils
|
V:14, I:125 | 232 | dehtmldiff (1) |
extraire un fichier de différences d’une page HTML |
patchutils
|
V:14, I:125 | 232 | filterdiff (1) |
extraire ou exclure des différences d’un fichier de différences |
patchutils
|
V:14, I:125 | 232 | fixcvsdiff (1) |
corriger les fichiers de différences créés par CVS que
patch (1) interprète mal |
patchutils
|
V:14, I:125 | 232 | flipdiff (1) |
échanger l’ordre de deux rustines |
patchutils
|
V:14, I:125 | 232 | grepdiff (1) |
afficher quels sont les fichiers modifiés par une rustine correspondant un une expression rationnelle |
patchutils
|
V:14, I:125 | 232 | interdiff (1) |
afficher les différences entre deux fichiers de différence unifiés |
patchutils
|
V:14, I:125 | 232 | lsdiff (1) |
afficher quels sont les fichiers modifiés par une rustine |
patchutils
|
V:14, I:125 | 232 | recountdiff (1) |
recalculer les nombres et les décalages dans un contexte unifié de fichiers de différences |
patchutils
|
V:14, I:125 | 232 | rediff (1) |
corriger les décalages et les nombres d’un fichier de différences édité manuellement |
patchutils
|
V:14, I:125 | 232 | splitdiff (1) |
séparer les rustines incrémentales |
patchutils
|
V:14, I:125 | 232 | unwrapdiff (1) |
réparer les correctifs dont les mots ont été coupés |
dirdiff
|
V:0, I:2 | 167 | dirdiff (1) |
afficher les différences et fusionner les modifications entre deux arbres de répertoires |
docdiff
|
V:0, I:0 | 553 | docdiff (1) |
comparer deux fichiers mot par mot ou caractère par caractère |
makepatch
|
V:0, I:0 | 100 | makepatch (1) |
créer des fichiers de rustines étendus |
makepatch
|
V:0, I:0 | 100 | applypatch (1) |
appliquer des fichiers de rustines étendus |
La procédure suivante vous permet d'extraire les différences entre deux
fichiers sources et créer un fichier de différences unifié
« fichier.patch0
» ou
« fichier.patch1
» selon l’emplacement du
fichier.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
Le fichier de différences (« diff » (encore appelé fichier « patch » ou rustine) est utilisé pour envoyer une mise à jour de programme. Celui qui reçoit applique cette mise à jour à un autre fichier de la manière suivante :
$ 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
Git is the tool of choice these days for the version control system (VCS) since Git can do everything for both local and remote source code management.
Debian provides free Git services via Debian Salsa service. Its documentation can be found at https://wiki.debian.org/Salsa .
Here are some Git related packages.
Tableau 10.11. Liste des paquets et des commandes relatifs à git
paquet | popcon | taille | commande | description |
---|---|---|---|---|
git
|
V:305, I:517 | 44453 | git (7) |
Git, système de contrôle de version rapide, évolutif et distribué |
gitk
|
V:4, I:36 | 1792 | gitk (1) |
Interface graphique de navigateur de dépôt Git avec historique |
git-gui
|
V:1, I:20 | 2386 | git-gui (1) |
Interface graphique pour Git (pas d’historique) |
git-email
|
V:0, I:10 | 1040 | git-send-email (1) |
envoyer une série de rustines sous forme de courriel à partir de Git |
git-buildpackage
|
V:1, I:10 | 7351 | git-buildpackage (1) |
automatise la mise en paquet Debian avec Git |
dgit
|
V:0, I:1 | 487 | dgit (1) |
git interoperability with the Debian archive |
imediff
|
V:0, I:0 | 169 | git-ime (1) |
interactive git commit split helper tool |
stgit
|
V:0, I:0 | 601 | stg (1) |
quilt par-dessus git (Python) |
git-doc
|
I:13 | 12989 | N/A | Documentation officielle de git |
gitmagic
|
I:0 | 721 | N/A | « Git Magic », le guide le plus facile à comprendre pour Git |
Vous pourrez définir certains éléments de configuration globaux, comme votre
nom et votre adresse de courriel utilisée par Git, dans
« ~/.gitconfig
» de la manière suivante :
$ git config --global user.name "Name Surname" $ git config --global user.email yourname@example.com
You may also customize the Git default behavior by the following.
$ git config --global init.defaultBranch main $ git config --global pull.rebase true $ git config --global push.default current
Si vous avez l’habitude d’utiliser les commandes de CVS ou de Subversion, vous pourrez définir certains alias de commandes comme suit :
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Vous pouvez vérifier votre configuration globale de la manière suivante :
$ git config --global --list
Git operation involves several data.
The working tree which holds user facing files and you make changes to them.
The changes to be recorded must be explicitly selected and staged to the
index. This is git add
and git rm
commands.
The index which holds staged files.
Staged files will be committed to the local repository upon the subsequent
request. This is git commit
command.
The local repository which holds committed files.
Git records the linked history of the committed data and organizes them as branches in the repository.
The local repository can send data to the remote repository by git
push
command.
The local repository can receive data from the remote repository by
git fetch
and git pull
commands.
The git pull
command performs git
merge
or git rebase
command after git
fetch
command.
Here, git merge
combines two separate branches of history
at the end to a point. (This is default of git pull
without customization and may be good for upstream people who publish branch
to many people.)
Here, git rebase
creates one single branch of sequential
history of the remote branch one followed by the local branch one. (This is
pull.rebase true
customization case and may be good for
rest of us.)
The remote repository which holds committed files.
The communication to the remote repository uses secure communication protocols such as SSH or HTTPS.
The working tree is files outside of the .git/
directory. Files inside of the .git/
directory hold the
index, the local repository data, and some git configuration text files.
Here is an overview of main Git commands.
Tableau 10.12. Main Git commands
Git command | fonction |
---|---|
git init |
créer le dépôt (local) |
git clone URL |
clone the remote repository to a local repository with the working tree |
git pull origin main |
update the local main branch by the remote repository
origin |
git add . |
add file(s) in the working tree to the index for pre-existing files in index only |
git add -A . |
add file(s) in the working tree to the index for all files including removals |
git rm filename |
remove file(s) from the working tree and the index |
git commit |
commit staged changes in the index to the local repository |
git commit -a |
add all changes in the working tree to the index and commit them to the local repository (add + commit) |
git push -u origin branch_name |
update the remote repository origin by the local
branch_name branch (initial invocation) |
git push origin branch_name |
update the remote repository origin by the local
branch_name branch (subsequent invocation) |
git diff treeish1 treeish2 |
show difference between treeish1 commit and treeish2 commit |
gitk |
GUI display of VCS repository branch history tree |
Here are some Git tips.
Tableau 10.13. Git tips
Git command line | fonction |
---|---|
gitk --all |
see complete Git history and operate on them such as resetting HEAD to another commit, cheery-picking patches, creating tags and branches ... |
git stash |
get the clean working tree without loosing data |
git remote -v |
check settings for remote |
git branch -vv |
check settings for branch |
git status |
show working tree status |
git config -l |
list git settings |
git reset --hard HEAD; git clean -x -d -f |
revert all working tree changes and clean them up completely |
git rm --cached filename |
revert staged index changed by git add filename |
git reflog |
get reference log (useful for recovering commits from the removed branch) |
git branch new_branch_name HEAD@{6} |
create a new branch from reflog information |
git remote add new_remote URL |
add a new_remote remote repository pointed by URL |
git remote rename origin upstream |
rename the remote repository name from origin to
upstream |
git branch -u upstream/branch_name |
set the remote tracking to the remote repository upstream
and its branch name branch_name . |
git remote set-url origin https://foo/bar.git |
change URL of origin |
git remote set-url --push upstream DISABLED |
disable push to upstream (Edit
.git/config to re-enable) |
git checkout -b topic_branch ; git push -u topic_branch
origin |
make a new topic_branch and push it to
origin |
git branch -m oldname newname |
rename local branch name |
git push -d origin branch_to_be_removed |
remove remote branch (new method) |
git push origin :branch_to_be_removed |
remove remote branch (old method) |
git checkout --orphan unconnected |
create a new unconnected branch |
git fetch upstream foo:upstream-foo |
create a local (possibly orphan) upstream-foo branch as a
copy of foo branch the upstream
repository |
git rebase -i origin/main |
reorder/drop/squish commits from origin/main to clean
branch history |
git reset HEAD^; git commit --amend |
squash last 2 commits into one |
git checkout topic_branch ; git merge --squash topic_branch
|
squash entire topic_branch into a commit |
git fetch --unshallow --update-head-ok origin
'+refs/heads/*:refs/heads/*' |
convert a shallow clone to the full clone of all branches |
git ime |
split the last commit into a series of file-by-file smaller commits
etc. (imediff package required) |
git repack -a -d; git prune |
repack the local repository into single pack (this may limit chance of lost data recovery from erased branch etc.) |
Avertissement | |
---|---|
Ne pas utiliser d'espaces dans la chaîne de balise même si certains outils
comme |
Attention | |
---|---|
If a local branch which has been pushed to remote repository is rebased or
squashed, pushing this branch has risks and requires
|
Attention | |
---|---|
L’appel d’une sous-commande |
Astuce | |
---|---|
If there is a executable file |
Consultez ce qui suit.
page de manuel : git(1)
(/usr/share/doc/git-doc/git.html
)
Manuel de l’utilisateur de Git
(/usr/share/doc/git-doc/user-manual.html
)
Un tutoriel d’introduction à
git « A tutorial introduction to git »
(/usr/share/doc/git-doc/gittutorial.html
)
Un tutoriel d’introduction à
git : deuxième partie « A tutorial introduction to git:
part two »
(/usr/share/doc/git-doc/gittutorial-2.html
)
Everyday GIT With 20 Commands
Or So (/usr/share/doc/git-doc/giteveryday.html
)
La magie de Git « Git Magic »
(/usr/share/doc/gitmagic/html/index.html
)
The version control systems (VCS) is sometimes known as the revision control system (RCS), or the software configuration management (SCM).
Here is a summary of the notable other non-Git VCS on the Debian system.
Tableau 10.14. List of other version control system tools
paquet | popcon | taille | outil | type du VCS | commentaire |
---|---|---|---|---|---|
mercurial
|
V:5, I:37 | 2013 | Mercurial | distribué | DVCS en Python avec un peu de C |
darcs
|
V:0, I:6 | 34070 | Darcs | distribué | DVCS avec une algèbre intelligente des rustines (lent) |
bzr
|
I:11 | 28 | Bazaar | distribué | DVCS influenced by tla written in Python (historic) |
tla
|
V:0, I:1 | 1022 | GNU arch | distribué | DVCS mainly by Tom Lord (historic) |
subversion
|
V:15, I:86 | 4838 | Subversion | distant | "CVS done right", newer standard remote VCS (historic) |
cvs
|
V:3, I:32 | 4620 | CVS | distant | previous standard remote VCS (historic) |
tkcvs
|
V:0, I:1 | 1498 | CVS, … | distant | Interface graphique d’affichage d’une arborescence de dépôt VCS (CVS, Subversion, RCS) |
rcs
|
V:2, I:16 | 564 | RCS | local | "Unix SCCS done right" (historic) |
cssc
|
V:0, I:2 | 2044 | CSSC | local | clone of the Unix SCCS (historic) |
[4] A write-once media such as CD/DVD-R can prevent overwrite accidents. (See Section 9.8, « Les données binaires » for how to write to the storage media from the shell commandline. GNOME desktop GUI environment gives you easy access via menu: "Places→CD/DVD Creator".)
[5] Some of these data can not be regenerated by entering the same input string to the system.
[6] If you use "~/.vimrc
" instead of
"~/.vim/vimrc
", please substitute accordingly.