E' troppo pesante ed è difficile ripulirlo dei servizi inutili, tanto vale usare direttamente una versione basica di Debian che potrete scaricare qui (e dove trovate le istruzioni per l'installazione)
Sapete instaurare una connessione ssh dal vostro PC al Raspberry usando putty o, meglio, Mobaxterm?
Ecco qui la guida ufficiale di Raspberry.
Poi, il vostro hard disk esterno deve essere formattato con un file system più digeribile possibile per linux: NTFS di windows funzionerà lo stesso, ma le prestazioni del sistema ne sarebbero degradate, quindi formattate il vostro hard disk esterno direttamente in ext4, ci sono molti tool per fare questa operazione anche da un computer windows.
Andiamo con ordine: siete seduti di fronte al vostro PC con una connessione ssh al Raspberry funzionante.
ssh username@IPdelRaspberry
Quasi tutte le operazioni andranno eseguite come utente amministrativo root, quindi digitiamo:
su root
e inseriamo la password scelta in fase di installazione.
Per prima cosa occorre impostare il fuso orario e la tastiera, ecco i comandi:
dpkg-reconfigure tzdata
dpkg-reconfigure console-data
dpkg-reconfigure console-data
dpkg-reconfigure locales
E' sempre il caso di operare con software aggiornato:
apt-get update
apt-get upgrade
rispondendo Y alla richiesta del sistema di installare eventuali aggiornamenti
Poi è il momento di installare il software necessario ai nostri scopi;
apt-get install screen vim rsync
Che cosa abbiamo installato?
screen è un programma che consente di lanciare un comando e disconnettersi dal raspberry con la certezza del proseguimento del funzionamento del comando;
vim è un editor di testo (non molto intuitivo nel funzionamento ma da qualche parte si deve pur cominciare)
rsync è il programma di sincronizzazione che useremo per il backup.
il passo successivo consiste nel far riconoscere il disco usb al raspberry. Linux riconosce automaticamente i dischi, ma non effettua, automaticamente, il montaggio di tali dischi sul file -system nelle versioni server come quella installata sul Raspberry.
E' come se voi inseriste una penna usb in un pc windows che non la apre automaticamente.
Inoltre, sempre per fare un parallelo con windows, bisogna fare in modo che il disco montato finisca sempre nello stesso punto del file system, in altri termini che la lettera assegnata da Windows alla pennetta usb resti sempre la stessa anche dopo vari riavvi e ricollegamenti.
Iniziamo a fare sul serio: digitiamo
fdisk -l
E ci ritroviamo di fronte qualcosa del genere:
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders, total 15564800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027aa3
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 104447 51200 b W95 FAT32
/dev/mmcblk0p2 104448 1742847 819200 83 Linux
/dev/mmcblk0p3 1742848 1945599 101376 82 Linux swap / Solaris
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
81 heads, 63 sectors/track, 382818 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5ba59dda
Device Boot Start End Blocks Id System
/dev/sda1 2048 1953525167 976761560 83 Linux
Niente paura.
Il comando che abbiamo dato elenca i dischi del sistema, un po' alla volta si prende dimestichezza, per adesso basti saper che mmcblk0 è la scheda microSD del Raspberry mntre sda è l'hard disk USB.
Ecco, a noi interessa proprio la stringa /dev/sda1 che sta a significare che la nostra partizione ext4 sull'hard disk esterno si chiama, appunto, /dev/sda1.
Manca ancora un pezzo:
ls /dev/disk/by-uuid -alh
drwxr-xr-x 2 root root 160 gen 1 1970 .
drwxr-xr-x 6 root root 120 gen 1 1970 ..
lrwxrwxrwx 1 root root 15 gen 1 1970 0a0e4e5a-7652-402a-89ea-5e524f5f8a37 -> ../../mmcblk0p2
lrwxrwxrwx 1 root root 10 gen 1 1970 6ba8c7e8-5c61-4448-8b73-26175ca6adfe -> ../../sda1
lrwxrwxrwx 1 root root 15 gen 1 1970 972837af-21d7-41cf-9f1e-4a3bb27b87ae -> ../../mmcblk0p3
lrwxrwxrwx 1 root root 15 gen 1 1970 A51D-3FFB -> ../../mmcblk0p1
Vediamo di capirci qualcosa. Avete presente l'sda1 che vien fuori dall'ultimo comando?
E che vuol dire l'ultimo comando?
Chiediamo al sistema di elencare tutte le partizioni presenti elencandole per UUID, ossia quel codice alfanumerico che identifica univocamente le partizioni.
Nel nostro caso: 6ba8c7e8-5c61-4448-8b73-26175ca6adfe
Beh, lo usiamo per dire al sistema che sda1 è identificato da 6ba8c7e8-5c61-4448-8b73-26175ca6adfe sempre e per sempre, anche se stacchiamo l'hard disk o riavviamo il sistema.
Creiamo una cartella in cui il nostro bravo raspberry andrà a montare l'hard disk esterno:
cd /media/ → Ci spostiamo nella cartella /media/
mkdir 1tb → creiamo la cartella 1tb
chown -R user:user 1tb/ → diamo all'utente il possesso della cartella
chmod -R 755 1tb/ → assegnamo i permessi di scrittura e lettura a questa cartella
Ora, un attimo di attenzione.
1tb è una cartella vuota, di proprietà dell'utente pi in cui tutti possono leggere e solo pi può scrivere.
Tutto qua.
E il nostro sda1 con tutto quel po' po' di codice lungo appresso?
vim /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/mmcblk0p3 none swap sw 0 0
UUID=6ba8c7e8-5c61-4448-8b73-26175ca6adfe /media/1tb ext4 defaults 0 2
Ecco qua dove andiamo ad inserire il nostro codice che abbiamo ricavato dal comando ls /dev/disk/by-uuid -alh, nella riga in grassetto.
Ora, usare vim non è semplicissimo, si può adoperare al suo posto nano, un altro editor un po' meno ostico, ma alla fine della fiera si deve aggiungere al normale file fstab quella riga.
Ovviamente il codice sarà diverso per ogni partizione (altrimenti che identificativo unico sarebbe?) e bisogna vedere come avete chiamato la cartella in cui andare a montare il disco esterno.
Una volta salvato potete uscire e 'montare' la nuova partizione nel sistema con il comando
mount -a
potete verificar il successo dell'operazione entrando nella cartella /media/1tb e verificando lo spazio disponibile nel sistema con il comando
df -h
File system Dim. Usati Dispon. Uso% Montato su
rootfs 772M 533M 223M 71% /
/dev/root 772M 533M 223M 71% /
devtmpfs 215M 0 215M 0% /dev
tmpfs 44M 224K 44M 1% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 108M 0 108M 0% /run/shm
/dev/mmcblk0p1 50M 19M 31M 38% /boot
/dev/sdb1 917G 270G 602G 31% /media/1tb
In questo caso il disco da 1tb è occupato per il 31%.
Riavviate fiduciosi il raspberry, il disco sarà di nuovo lì, montato e scrivibile.
Ora dobbiamo finalmente impostare il nostro sistema di backup a partire dal PC di cui vogliamo fare il backup.
In questa guida, al momento, prepareremo il backup di un computer che usa linux, poi aggiungerò anche una sezione per un client windows.
Spostiamoci, quindi, sul computer di cui si deve fare il backup.
Imposteremo un sistema che, automaticamente, alle 20 di sera, sincronizzerà il contenuto di una propria cartella con il disco da 1tb collegato al raspberry.
Coraggio, il peggio è alle spalle.
Accendiamo il nostro PC linux di cui, ad esempio, desideriamo fare il backup della nostra home.
Apriamo una finestra di terminale e digitiamo:
ssh-keygen -t rsa -C "Raspberry"
non inserire alcuna password quando ci verrà richiesto ma premiamo semplicemente invio.
Cosa abbiamo fatto? Abbiamo generato una coppia di chiavi, per i dettagli suggerisco la lettura di questa guida.
Copiamo la chiave pubblica sul raspberry con il comando
ssh-copy-id -i ~/.ssh/id_rsa.pub username@IPdelRaspberry
e proviamo a connetterci al raspberry senza inserire la password
ssh username@IPdelRaspberry
se non ci viene richiesta la password siamo a posto.
Nella nostra home possiamo preparare lo script di backup:
creiamo il file backup.sh, lo rendiamo eseguibile (esercizio ;) ) e dentro ci incolliamo:
#!/bin/bash
rsync --exclude=".cache" -avrzh --delete --progress --log-file=/home/username/raspberrypi.log /home/username/ -e "ssh" username@IPdelRaspberry:/media/1tb/
rsync è il programma di backup, il parametro --exclude="lost+found" esclude la cartella .cache dal backup (si possono aggiungere tutte le esclusioni necessarie), --delete cancella i files dalla cartella di backup non più presenti nella cartella sorgente, -- progress visualizza il progresso dell'operazione, poi abbiamo la generazione del log (sempre utile) e la cartella di origine.
Per ultimo, -e "ssh" username@IPdelRaspberry:/media/1tb/ vuol dire che rsync si collega usando il protocollo ssh col nome utente indicato al raspberry nella cartella /media/1tb/
E come facciamo a farlo lanciare automaticamente ogni sera alle 20?
Editiamo come root il file /etc/crontab aggiungendo la riga in grassetto allo script:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
00 20 * * * username /home/username/backup.sh >/dev/null 2>&1
E questo è tutto.
Ogni sera alle 20, se entrambe le macchine sono accese, il PC automaticamente sincronizzerà la home con il raspberry.
Non aspettatevi grandi prestazioni nel trasferimento dei files, ecco perchè l'ideale è usare questo sistema per il backup notturno magari del classico muletto, un PC a basso consumo che faccia da file server domestico.
PRO:
- economicità nei componenti e nei consumi;
- estremamente didattico per imparare ad usare linux;
- completamente automatico
CONTRO:
- Se ci si deve ricorare di accendere il PC prima delle 20 non è davvero un backup automatico (ma ne parleremo nella prossima puntata)
- prestazioni insufficienti
- recupero files di backup dal disco usb non immediato nè rapido
Sono stato un po' prolisso, sicuramente imperfetto, migliorerò la guida nel tempo e aggiungerò qualcosina anche per windows quanto prima.
Buon backup a tutti
"The Backup is life, the backup is a good and right thing"
There are a lot of backup systems: from a simple copy and past on an usb pendrive to big data cloud.
In the home environment are spreading the NAS in order to safeguard their digital life made, now, of hundreds of GB of photos, movies, ebooks, music files and documents.
We are talking about a minimum cost of 150 € for the NAS to wich add the cost of the hard drive, a single disc 1 TB NAS can cost well over € 200.
But you want to put the pleasure of doing it yourself?
Now, who to bring this guide?
Not only users of GNU / Linux BSD etc.
It 'also dedicated to Windows users who want to try a little with linux and that, however, they have no intention of giving up Windows on their PC:
this NAS will work for you too (in the next part of this guide)!
What skills do you need?
Skills? Well, you should know how to establish an ssh connection and how to use a text editor like vim.
If you installed a classic ubuntu in virtualbox you could rapidly acquire the necessary skills.
Starting from scratch in all areas of this guide would be longer for the prerequisites thanb for the beef, therefore, while not assuming anything, I'll link someuseful guides to the various segments of our job.
What you need:
A running Raspberry Pi (but the guide applies to any computer running on Linux, say, an old netbook that you hold off for years) and external media for backup, typically a USB external hard drive, but if, for example, you have to save only about twenty GB of data, you could use a microSD 32GB for Raspberry more than enough even for the backup.
The advantage of this solution is in its full automation, cost (the Raspberry will cost around 50 €, Micro SD Card to its operating system included) and stimulating educational for those approaches universe linux to learn and improve.
What is the Raspberry Pi? You'll go read here.
What is Linux? Go here.
First: the original operating system of Raspberry's not good.
It is too heavy and full of unnecessary services (including a graphical desktop), you might use directly a basic version of Debian that you can download here (where you can find also instructions for installation)
You know how to establish an ssh connection from your PC to the Raspberry using putty or, better, MobaXterm?
Here is the official documentation of Raspberry.
Then, your external hard drive must be formatted with a file system can be more digestible for linux: NTFS windows work, yes, but system performance will be degraded, then format your external hard drive directly in ext4, there are many tools to help with that too from a windows computer.
Now you're sitting in front of your PC with a ssh functioning connection to the Raspberry.
ssh username@IPdelRaspberry
Almost all operations will be run as an administrative user root, then type:
su root
and enter the password chosen during installation.
First, you must set the time zone and keyboard, here are the commands:
dpkg-reconfigure tzdata
dpkg-reconfigure console-data
dpkg-reconfigure console-data
dpkg-reconfigure locales
It's bettere work with updated software:
apt-get update
apt-get upgrade
Then it's time to install the necessary software for our purposes
apt-get install screen vim rsync
What we have installed?
Screen is a program that allows you to run a command and disconnect from raspberry with the certainty of the continuing operation of the command;
Vim is a text editor (not very intuitive in operation but somewhere it has to start)
rsync is the synchronization program that we will use for backup.
The next step is to recognize the USB disk to raspberry. Linux disks automatically recognizes, but does not, automatically, the installation of such records on file -system versions server as the one installed on Raspberry.
And 'as if you inseriste a USB stick into a Windows PC that does not open automatically.
Moreover, to make a parallel with windows, we must make sure that the disk mounted to end at the same point of the file system, in other words that the letter assigned by Windows to the USB key always remains the same even after several reboots and reconnections.
We begin to get serious: we type
fdisk -l
And we are faced with something like this:
Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders, total 15564800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00027aa3
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 104447 51200 b W95 FAT32
/dev/mmcblk0p2 104448 1742847 819200 83 Linux
/dev/mmcblk0p3 1742848 1945599 101376 82 Linux swap / Solaris
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
81 heads, 63 sectors/track, 382818 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5ba59dda
Device Boot Start End Blocks Id System
/dev/sda1 2048 1953525167 976761560 83 Linux
No fear.
The command we have given lists disks in the system, a bit 'at a time you get comfortable, for now suffice it to know that mmcblk0 is the microSD card Raspberry mntre sda is the USB hard drive.
Here, we are interested in just the string / dev / sda1 which means that our ext4 partition external hard drive is called, precisely, / dev / sda1.
Still missing a piece:
ls /dev/disk/by-uuid -alh
drwxr-xr-x 2 root root 160 gen 1 1970 .
drwxr-xr-x 6 root root 120 gen 1 1970 ..
lrwxrwxrwx 1 root root 15 gen 1 1970 0a0e4e5a-7652-402a-89ea-5e524f5f8a37 -> ../../mmcblk0p2
lrwxrwxrwx 1 root root 10 gen 1 1970 6ba8c7e8-5c61-4448-8b73-26175ca6adfe -> ../../sda1
lrwxrwxrwx 1 root root 15 gen 1 1970 972837af-21d7-41cf-9f1e-4a3bb27b87ae -> ../../mmcblk0p3
lrwxrwxrwx 1 root root 15 gen 1 1970 A51D-3FFB -> ../../mmcblk0p1
And let's figure it out.
You remember the sda1 that comes out from the last command?
And that means the last command?
We ask the system to list all partitions by listing by UUID, ie the alphanumeric code that uniquely identifies partitions.
In our case: 6ba8c7e8-5c61-4448-8b73-26175ca6adfe
And what do we do?
Well, we use it to tell the system that sda1 is identified by 6ba8c7e8-5c61-4448-8b73-26175ca6adfe always and forever, even if we detach the hard disk or reboot the system.
We create a folder in which our raspberry will mount the external hard drive:
cd /media/ →we are moving in the /media/ directory
mkdir 1tb → we create the directory 1tb
chown -R pi:pi 1tb/ → give to the user the possession of the directory 1tb
chmod -R 755 1tb/ → let's assign the permissions to the directory
Now, a moment's attention. 1tb is an empty folder, that you own more when everyone can read and write can only pi.
That's all.
And our sda1 with all the little 'bit' of long code below?
vim /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 0
/dev/mmcblk0p3 none swap sw 0 0
UUID=6ba8c7e8-5c61-4448-8b73-26175ca6adfe /media/1tb ext4 defaults 0 2
Here's where we're going to put our code that we have obtained from the command ls / dev / disk / by-uuid -alh, in bold line.
Now, using vim is not easy, you can use nano in place, another editor a bit less difficult, but at the end of the fair is to be added to fstab that line.
Obviously, the code will be different for each partition.
Once saved, you can go out and 'mount' the new partition in the system with the command
mount -a
you can verify the success of entering into the / media / 1TB and verifying the space available in the system with the command
df -h
File system Dim. Usati Dispon. Uso% Montato su
rootfs 772M 533M 223M 71% /
/dev/root 772M 533M 223M 71% /
devtmpfs 215M 0 215M 0% /dev
tmpfs 44M 224K 44M 1% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 108M 0 108M 0% /run/shm
/dev/mmcblk0p1 50M 19M 31M 38% /boot
/dev/sdb1 917G 270G 602G 31% /media/1tb
In this case the 1tb disc is busy for the 31%.
Restart confident the raspberry, the disc will be back there, still mounted and writable.
And now?
Now we finally set up our backup system from the PC we want to backup.
In this guide, at the time, we will prepare to back up a computer running Linux, then add a section to a windows client.
Let's move, then, on your computer that you should back up.
We will set up a system that automatically at 20 pm, will synchronize the contents of your folder with 1TB disk connected to the raspberry.
Courage, the worst is behind us.
We turn on our PC linux which, for example, want to back up our home.
Open a terminal window and type:
ssh-keygen -t rsa -C "Raspberry"
not enter a password when we will be asked (twice).
What have we done? We have generated a key pair, for details suggest the reading of this guide.
We copy the public key on the raspberry with the simple command
ssh-copy-id -i ~/.ssh/id_rsa.pub username@IPdelRaspberry
and we try to connect to the raspberry without password
ssh username@IPdelRaspberry
if no password is asked we're ok.
In our home directory we can prepare the backup script backup.sh
Edit it with vim, nano or a text editor, then make ite executable (how? A little exercise)
#!/bin/bash
rsync --exclude=".cache" -avrzh --delete --progress --log-file=/home/username/raspberrypi.log /home/username/ -e "ssh" username@IPdelRaspberry:/media/1tb/
Here's our backup script:
rsync is the backup program, the parameter --exclude = "lost + found" folder .cache exclude from backup (you can add all the exclusions necessary), --delete delete files from the backup folder is no longer in the folder source - progress shows the progress of the operation, then we have the generation of log (always useful) and the source folder.
Finally, -e "ssh" username @ IPdelRaspberry: / media / 1TB / means that rsync is connected using the ssh protocol with the user name indicated in raspberry in the / media / 1TB /
And how do we do that launch automatically every night at 20?
Edit it as root / etc / crontab and add the line in bold script:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
00 20 * * * username /home/username/backup.sh >/dev/null 2>&1
And that's it.
Every night, at 20, if both machines are on, the PC automatically synchronize the home with the raspberry.
Do not expect great performance in the transfer of the files, which is why it is best to use this system for the nightly backup maybe using a classic forklift, a low-power PC to serve as a home file server
PRO:
cheap price for components and consumption
extremely educational to learn to use linux
AGAINST:
recover files from the backup disk usb not immediate nor fast
If you must remember to turning on your PC before 20 is not an automatic backup
poor performance
I was a bit 'confused, certainly imperfect, will improve the guide over time and add something for windows as soon as possible.
Good backup at all