From ea2df719d806c5efc5e1f563d39cd243ba6480aa Mon Sep 17 00:00:00 2001 From: greg Date: Mon, 29 Sep 2025 13:56:29 +0200 Subject: [PATCH] add zfs --- docs/divers/cmd/backup.md | 12 ++++---- docs/divers/cmd/index.md | 6 ++-- docs/divers/cmd/rsync.md | 64 ++++++++++++++++++++++++++++++++++++++ docs/divers/cmd/zfs.md | 65 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 139 insertions(+), 8 deletions(-) create mode 100644 docs/divers/cmd/rsync.md create mode 100644 docs/divers/cmd/zfs.md diff --git a/docs/divers/cmd/backup.md b/docs/divers/cmd/backup.md index 669066c1..7ae28810 100644 --- a/docs/divers/cmd/backup.md +++ b/docs/divers/cmd/backup.md @@ -1,30 +1,30 @@ # Sauvegarder des données 1. Lister les partitions: - ``` { .copy } + ``` {.bash .copy } lsblk ``` 2. Identifier la partition contenant les fichiers à sauvegarder 3. Monter la partition - ``` { .copy } + ``` {.bash .copy } mkdir /mnt/nom_du_dossier mount /dev/sdXy /mnt/nom_du_dossier ``` 4. Cibler le dossier à sauvegarder - ``` { .copy } + ``` {.bash .copy } ls /mnt/nom_du_dossier ``` 5. Créer le dossier de réception sur le serveur de backup: - ``` { .copy } + ``` {.bash .copy } ssh -p 5555 bellinuxien@192.168.1.75 mkdir /home/bellinuxien/BACKUPS/nom-de-dossier exit ``` 6. Copier le dossier utilisateur vers le dossier sur le serveur de backup: - ``` { .copy } + ``` {.bash .copy } rsync -ah -e "ssh -p 5555" /mnt/nom_du_dossier bellinuxien@192.168.1.75:/home/bellinuxien/BACKUPS/nom_du_dossier/ --info=progress2 && sync ``` 7. Rapatrier les fichiers du serveur de backup vers une machine: - ``` { .copy } + ``` {.bash .copy } rsync -ah -e "ssh -p 5555" bellinuxien@192.168.1.75:/home/bellinuxien/BACKUPS/nom_du_dossier/ /mnt/nom_du_dossier --info=progress2 && sync ``` diff --git a/docs/divers/cmd/index.md b/docs/divers/cmd/index.md index 2341536d..4bba4746 100644 --- a/docs/divers/cmd/index.md +++ b/docs/divers/cmd/index.md @@ -3,11 +3,13 @@ - [ssh](ssh.md) - [screen](screen.md) - [backup](backup.md) -- [rsync](backup.md) +- [rsync](rsync.md) - [nmcli](nmcli.md) -- [chroot](chroot.md) - [lvm](lvm.md) - [Monter une partition](mount.md) +- [Monter et gérer un RAID](raid.md) +- [Système de fichier ZFS](zfs.md) +- [chroot](chroot.md) - [read](read.md), pour permettre à l'utilisateur d'interagir avec un script (user prompt / user input) - [heredoc](heredoc.md), le fameux `EOF`, pour afficher du contenu sur plusieurs lignes - [listes et dictionnaires avec Bash](bash-lists.md) diff --git a/docs/divers/cmd/rsync.md b/docs/divers/cmd/rsync.md new file mode 100644 index 00000000..b4eec2f3 --- /dev/null +++ b/docs/divers/cmd/rsync.md @@ -0,0 +1,64 @@ +# RSYNC (synchronisation de répertoires / fichiers) + +## Synthaxe de base + +``` {.bash .copy } +rsync [options] source destination +``` + +## Utilisation locale + +1. Copier un fichier: +``` {.bash .copy } +rsync fichier.txt /home/user/backup/ +``` + +2. Copier le contenu d'un dossier: +``` {.bash .copy } +rsync -av /home/user/docs/ /home/user/backup/ +``` + +3. Copier un dossier et son contenu: +``` {.bash .copy } +rsync -av /home/user/docs /home/user/backup/ +``` + +## Utilisation distante (via SSH) + +1. Serveur distant vers machine locale: +``` {.bash .copy } +rsync -avzP user@serveur:/home/user/docs/ /home/user/backup/ +``` + +2. Machine local vers serveur distant: +``` {.bash .copy } +rsync -avzP /home/user/backup/ user@serveur:/home/user/docs/ +``` + +## Les options + +``` {.bash .copy } +-a # archive (conserve permissions, liens, dates…) +-g # préserve le groupe +-l # copie les liens symboliques +-o # préserve le propriétaire (nécéssite root) +-p # préserver les permissions +-u # ignore la copie des fichiers plus récents sur la destination +-v # verbose (affiche les détails) +-z # compresse les données lors du transfert +-v # mode verbose pour afficher les informations de la copie +-c # utilise la somme de contrôle pour vérifier si il faut copier le fichier ou pas +-P # montre la progression + reprend un transfert interrompu +--exclude= # exclure les fichiers de la copie +--delete # supprime dans la destination les fichiers absents de la source +--max-size # indique la taille maximale des fichiers à copier +--dry-run # test la commande sans rien copier +--progress # affiche une barre de progréssion +-e ssh # passe par SSH (utile pour le réseau) +-e "ssh -p 2222" # passe les paramètres SSH +``` + +## Plus d'informations + +- [Linux.die.net](https://linux.die.net/man/1/rsync) +- [Wiki ubuntu](https://doc.ubuntu-fr.org/rsync) \ No newline at end of file diff --git a/docs/divers/cmd/zfs.md b/docs/divers/cmd/zfs.md new file mode 100644 index 00000000..c5611d95 --- /dev/null +++ b/docs/divers/cmd/zfs.md @@ -0,0 +1,65 @@ +# Système de fichier ZFS + + +## Créer un système de fichier ZFS + +- Créer une pool et son dataset +``` {.bash .copy } +sudo zpool create tank /dev/sdb +sudo zfs create tank/data +``` + +??? note "explications" + tank → pool name + /dev/sdb → target disk + +## Redondance (RAID) + +- Créer une pool ZFS sur un disk: +``` {.bash .copy } +sudo zpool create tank /dev/sdb +``` + +- Ajouter des disks: +``` {.bash .copy } +# Mirror (like RAID1) +sudo zpool create tank mirror /dev/sdb /dev/sdc +# RAID-Z1 (like RAID5, 1 disk fault tolerance) +sudo zpool create tank raidz1 /dev/sdb /dev/sdc /dev/sdd +# RAID-Z2 (2 disk fault tolerance) +sudo zpool create tank raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde +``` + +- Créer un dataset: +``` {.bash .copy } +sudo zfs create tank/data +``` + +## Sauvegarder (snapshots) + +- Prendre Snapshot daté: +``` {.bash .copy } +# Snapshot name includes the date +sudo zfs snapshot tank/data@$(date +%Y-%m-%d) +``` + +- Cloner un snpashot: +``` {.bash .copy } +sudo zfs clone tank/data@before-upgrade tank/data_clone +``` + +- Restorer un snapshot (rollback): +``` {.bash .copy } +sudo zfs rollback tank/data@before-upgrade +``` + +- Supprimer un snapshot: +``` {.bash .copy } +sudo zfs destroy tank/data@before-upgrade +``` + +## Commandes + +``` {.bash .copy } +zfs list -t snapshot +``` \ No newline at end of file