# - bof - #

#!/bin/bash





# -  - #
# - Documentation - #
https://wiki.archlinux.org/title/ZFS
https://archive.archlinux.org/repos/2022/03/30/



# :1
# -  - #
# - Retrieve archzfs lsign-key - #
curl -O https://archzfs.com/archzfs.gpg

sudo pacman-key -a archzfs.gpg
sudo pacman-key --lsign-key DDF7DB817396A49B2A2723F7403BD972F75D9D76

rm -rf archzfs.gpg;


sudo pacman-key --list-keys;



# :2
# -  - #
# - pacman.conf - #
sudo vim /etc/pacman.conf;

[archzfs]
Server = https://archzfs.com/$repo/$arch
SigLevel = Optional TrustAll



# :3
# -  - #
# - Update - #
sudo pacman -Syu --noconfirm && sudo pacman -Syyuu --noconfirm;



# :4
# -  - #
# - Install packages - #
yay -S zfs-utils zfs-dkms;



# :5
# -  - #
# - Load zfs modules - #
sudo modprobe zfs;
zpool status -v;



# :6
# -  - #
# - Import Data & DataPool zpools - #
sudo zpool import;

sudo zpool import Data;
sudo zpool import DataPool;







<<'comment'
zpool status;
zpool status -v Data;
zpool list -v;
zpool list -v Data;
zfs list;
zfs get mounted Data;
zfs get mountpoint Data;
zpool iostat;
zpool iostat -v;
zpool iostat -v Data;
zpool destroy Data;
zfs get all Data;

# - zfs list properties - #
zfs get all;
zfs get all Data;
zfs get all Data/Documents;
zfs get all Data/Documents/Downloads;
zfs list -r Data;
zfs list -r Data/Documents;
zfs list -r Data/Documents/Downloads;
zfs list -r Data/Documents/Videos;

# -  - #
# - Quota - #
zfs get quota Data/Documents/Videos;
sudo zfs set quota=2G Data/Documents/Videos;



# -  - #
# - Manage Snapshots - #

# -  - #
# - Data listsnapshots property - #
zpool get listsnapshots Data;
NAME      PROPERTY       VALUE      SOURCE
DataPool  listsnapshots  off        default

sudo zpool set listsnapshots=on Data;

# -  - #
# - Create Data nested Snapshot - #
sudo zfs snapshot -r Data@Data.Snapshot_$(date +%Y-%m-%d_%H-%M-%S);
zfs list -rt snapshot Data;

NAME                                                         USED  AVAIL     REFER  MOUNTPOINT
Data@Data.Snapshot_2022-02-13_11-57-08                         0B      -       24K  -
Data/Documents@Data.Snapshot_2022-02-13_11-57-08               0B      -       26K  -
Data/Documents/Downloads@Data.Snapshot_2022-02-13_11-57-08     0B      -       24K  -
Data/Documents/Music@Data.Snapshot_2022-02-13_11-57-08         0B      -       24K  -
Data/Documents/Pictures@Data.Snapshot_2022-02-13_11-57-08      0B      -       24K  -
Data/Documents/Videos@Data.Snapshot_2022-02-13_11-57-08        0B      -       24K  -

# -  - #
# - Roolback Data Snapshot - #
zfs list -rt snapshot Data;
sudo zfs rollback <pool|datastore>@<snapshot>
sudo zfs rollback Data@Data.Snapshot_2022-02-13_11-57-08;

# -  - #
# - Destroy snapshot (DANGEROUS!) - #
zfs list -rt snapshot Data;
sudo zfs destroy -r Data@Data.Snapshot_2022-02-13_11-57-08;



# -  - #
# - DataPool listsnapshots property - #
zpool get listsnapshots DataPool;
NAME      PROPERTY       VALUE      SOURCE
DataPool  listsnapshots  off        default

sudo zpool set listsnapshots=on DataPool;

# -  - #
# - Create DataPool nested Snapshot - #
sudo zfs snapshot -r DataPool@DataPool.Snapshot_$(date +%Y-%m-%d_%H-%M-%S);
zfs list -rt snapshot DataPool;

# -  - #
# - Roolback DataPool Snapshot - #
zfs list -rt snapshot DataPool;
sudo zfs rollback <pool|datastore>@<snapshot>
sudo zfs rollback DataPool@DataPool.Snapshot_2022-02-13_11-57-08;

# -  - #
# - Destroy snapshot (DANGEROUS!) - #
zfs list -rt snapshot DataPool;
sudo zfs destroy -r DataPool@DataPool.Snapshot_2022-02-10_00-02-31;
sudo zfs destroy -r DataPool@DataPool.Snapshot_2022-02-09_19-02-50;



# -  - #
# - Importing zpool - #

# - Show zpools available - #
sudo zpool import;

# - Importing DataPpool - #
sudo zpool import -f Data;
zpool status;
zpool status -v Data;
sudo zpool clear Data;
sudo zpool scrub Data;

# -  - #
# - Destroy snapshot (DANGEROUS!) - #
zfs list -rt snapshot Data;
sudo zfs destroy -r Data@Data.Snapshot_2022-02-13_11-57-08;



# -  - #
# - Clone management - #
# - Data store of which the initial contents are the same as the source snapshot - #

zfs get origin Data;

# -  - #
# - Create clone - #
sudo zfs clone Data@Data.Snapshot Data/Data.Clone;
zfs list -r -t snapshot -o name,creation Data;
zfs list -r -t snapshot -o name,creation Data/Documents;
ls /Data/Data.Clone;



# -  - #
# - Show disk space - #
zfs list -o space;
zfs list -o space -r Data;
zfs list;
zfs list -r Data;
zfs list Data/Documents;
zfs list -r Data/Documents/Videos;
la /Data/Documents;



# -  - #
# - Destroy clone (DANGEROUS!) - #
sudo zfs destroy DataPool/Programs1.Clone2;



# -  - #
# - Clone snapshot - #

# -  - #
# - Crate/Delete snapshot clone - #
zfs list -r Data;
zfs list -t snapshot;
zfs list -t snapshot Data;

zfs list -t snapshot Data/Documents;
NAME                                               USED  AVAIL     REFER  MOUNTPOINT
Data/Documents@Data.Snapshot_2022-02-13_12-10-07    13K      -       26K  -

sudo zfs clone Data/Documents@Data.Snapshot_2022-02-13_12-10-07 Data/Documents-Snapshot.Clone1;
zfs list -r Data;

NAME                                                         USED  AVAIL     REFER  MOUNTPOINT
Data                                                         401K  67.3G       25K  /Data
Data@Data.Snapshot_2022-02-13_12-10-07                        13K      -       24K  -
Data/Documents                                               135K  67.3G       26K  /Data/Documents
Data/Documents@Data.Snapshot_2022-02-13_12-10-07              13K      -       26K  -
Data/Documents-Snapshot.Clone1                                 0B  67.3G       26K  /Data/Documents Snapshot.Clone1
Data/Documents/Downloads                                      24K  67.3G       24K  /Data/Documents/Downloads
Data/Documents/Downloads@Data.Snapshot_2022-02-13_12-10-07     0B      -       24K  -
Data/Documents/Music                                          24K  67.3G       24K  /Data/Documents/Music
Data/Documents/Music@Data.Snapshot_2022-02-13_12-10-07         0B      -       24K  -
Data/Documents/Pictures                                       24K  67.3G       24K  /Data/Documents/Pictures
Data/Documents/Pictures@Data.Snapshot_2022-02-13_12-10-07      0B      -       24K  -
Data/Documents/Videos                                         24K  2.00G       24K  /Data/Documents/Videos
Data/Documents/Videos@Data.Snapshot_2022-02-13_12-10-07        0B      -       24K  -

# -  - #
# - Destroy clone (DANGEROUS!) - #
sudo zfs destroy Data/Documents-Snapshot.Clone2;
zfs list -r Data;


# -  - #
# - List clone content - #
la /Data/Documents-Snapshot.Clone1;
total 3.0K
drwxrwxr-x 6 is_derayo is_derayo 6 Feb 13 11:43 ./
drwxrwxr-x 4 is_derayo is_derayo 4 Feb 13 12:25 ../
drwxr-xr-x 2 root      root      2 Feb 13 11:43 Downloads/
drwxr-xr-x 2 root      root      2 Feb 13 11:43 Music/
drwxr-xr-x 2 root      root      2 Feb 13 11:43 Pictures/
drwxr-xr-x 2 root      root      2 Feb 13 11:43 Videos/



# -  - #
# - List Zfs content - #
zfs list -t snapshot;
zfs list -rt snapshot -o name,creation Data;
zfs list -rt snapshot -o name,creation Data/Documents;
zfs list -rt snapshot -o name,creation Data/Documents/Downloads;
zfs list -o space;
zfs list -o space -r Data;
zfs list -o space -r Data/Documents;
zfs list -o space -r Data/Documents/Videos;
zfs list -r Data;
zfs list -r Data/Documents;
zfs list -r Data/Documents/Videos;



df -h;
Filesystem                     Type        Size  Used Avail Use% Mounted on
proc                           proc           0     0     0    - /proc
sys                            sysfs          0     0     0    - /sys
dev                            devtmpfs    2.9G     0  2.9G   0% /dev
run                            tmpfs       2.9G  688K  2.9G   1% /run
/dev/vda1                      ext4         30G   16G   13G  57% /
securityfs                     securityfs     0     0     0    - /sys/kernel/security
tmpfs                          tmpfs       2.9G     0  2.9G   0% /dev/shm
devpts                         devpts         0     0     0    - /dev/pts
cgroup2                        cgroup2        0     0     0    - /sys/fs/cgroup
pstore                         pstore         0     0     0    - /sys/fs/pstore
bpf                            bpf            0     0     0    - /sys/fs/bpf
systemd-1                      autofs         0     0     0    - /proc/sys/fs/binfmt_misc
mqueue                         mqueue         0     0     0    - /dev/mqueue
tracefs                        tracefs        0     0     0    - /sys/kernel/tracing
hugetlbfs                      hugetlbfs      0     0     0    - /dev/hugepages
debugfs                        debugfs        0     0     0    - /sys/kernel/debug
configfs                       configfs       0     0     0    - /sys/kernel/config
fusectl                        fusectl        0     0     0    - /sys/fs/fuse/connections
tmpfs                          tmpfs       2.9G     0  2.9G   0% /tmp
tmpfs                          tmpfs       594M   32K  594M   1% /run/user/1000
Data                           zfs          68G  128K   68G   1% /Data
Data/Documents                 zfs          68G  128K   68G   1% /Data/Documents
Data/Documents/Downloads       zfs          68G  128K   68G   1% /Data/Documents/Downloads
Data/Documents/Music           zfs          68G  128K   68G   1% /Data/Documents/Music
Data/Documents/Pictures        zfs          68G  128K   68G   1% /Data/Documents/Pictures
Data/Documents/Videos          zfs         2.0G  128K  2.0G   1% /Data/Documents/Videos
Data/Documents-Snapshot.Clone1 zfs          68G  128K   68G   1% /Data/Documents-Snapshot.Clone1
total                          -           448G   16G  431G   4% -
comment





# - eof - #
