> docker image save -o backup/snikket-web-proxy.tar snikket/snikket-web-proxy:stable
[15:16 Sun Feb 25]root@snikket (275):/etc/snikket
> ll backup/
Permissions Size User Date Modified Name
.rw------- 101M root 25 Feb 15:16 snikket-web-proxy.tar
```
## Backup di un volume
Ad esempio, creare un nuovo container denominato `dbstore`:
```bash
docker run -v /dbdata --name dbstore ubuntu /bin/bash
```
Per eseguire un backup del volume `dbdata`, eseguire il seguente comando:
```bash
docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
```
Nel comando `docker run`, vengono impostate due opzioni relative ai volumi:
*`--volumes-from dbstore`: Consente di montare automaticamente il volume definito nel container `dbstore` nel nuovo container appena creato.
*`-v $(pwd):/backup`: Permette di collegare una directory host locale nel nuovo container. In questo caso, `$(pwd)` rappresenta la directory di lavoro corrente sulla macchina host. Tutte le azioni intraprese all'interno del container relativamente a tale cartella verranno riflesse anche nella directory host.
Oppure, meglio sarebbe utilizzare, per questo scopo, **busybox**, uno strumento software che combina molti programmi Unix essenziali in un singolo binario compatto. È molto leggero, efficiente e versatile.
```bash
docker run --rm --mount source=snikket_data,target=/volume-snikket-data_backup -v $(pwd):/backup busybox tar -czvf /backup/snikket-data_bk_$(date +%F).tar.gz /volume-snikket-data_backup
```
-`docker run`: avvia un nuovo container Docker partendo da un'immagine specificata.
-`--rm`: rimuove automaticamente il container subito dopo la sua interruzione.
-`--mount source=snikket_data,target=/volume-snikket-data_backup`: monta il volume `snikket_data` nel path `/volume-snikket-data_backup` del nuovo container.
-`-v $(pwd):/backup`: monta la directory di lavoro corrente dell'host nel path `/backup` all'interno del nuovo container.
-`busybox`: specifica l'immagine base da utilizzare per creare il container.
-`tar -czvf /backup/snikket-data_bk_$(date +%F).tar.gz /volume-snikket-data_backup`: all'avvio del container, viene eseguito il comando `tar`, salvando il contenuto del volume `/volume-snikket-data_backup` nel file `/backup/snikket-data_bk_$(date +%F).tar.gz`, dove `$(date +%F)` rappresenta la data corrente.
- Infine, viene rimosso il container, ma il file di backup rimane presente nella cartella di lavoro corrente:
```bash
[15:43 Sun Feb 25]root@snikket (297):/etc/snikket/backup
> ll
Permissions Size User Date Modified Name
.rw-r--r-- 259 root 25 Feb 15:42 snikket-data_bk_2024-02-25.tar.gz