Archivi tag: linux

Installare un server svn su debian 10/9/8

SVN è un sistema open source di controllo della versione creato dalla Apache Foundation Team. Permette di tenere traccia di tutte le modifiche effettuate su una raccolta di file e cartelle. Ogni volta che modifichi, aggiungi o elimini un file o una cartella dentro un repository locale che gestisci con Subversion e invii queste modifiche al tuo repository Subversion sul server, viene creata una nuova revisione che riflette queste modifiche. Subversion permette di tornare sempre indietro, guardare e ottenere il contenuto delle revisioni precedenti.

Anche se Subversion è in grado di gestire qualunque genere di file (sia di testo che binario) viene usato in modo particolare con i repository contenente codice sorgente.

Vediamo come si configura Subversion (svn) su un server basato sui sistemi operativi Debian 10, Debian 9 e Debian 8.

1° passo: installare Apache

Per prima cosa occorre installare il server web Apache, necessario ai moduli di Subversion che installeremo successivamente. Aprire quindi una console dei comandi e digitare in sequenza:

$ sudo apt-get update
$ sudo apt-get install apache2

2° passo: installare SVN

Procediamo con l’installazione dei pacchetti di Subversion. Dopodiché riavviamo anche il server Apache:

$ sudo apt-get install subversion libapache2-mod-svn libapache2-svn libsvn-dev
$ sudo a2enmod dav sudo a2enmod dav_svn
$ sudo service apache2 restart

3° passo: configurare Apache e SVN

Adesso occorre modificare alcuni file di configurazione per abilitare le funzioni necessarie. Editiamo per primo il file /etc/apache2/mods-enabled/dav_svn.conf e aggiungiamo le seguenti righe:

<Location /svn>
   DAV svn
   SVNParentPath /var/lib/svn

   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd
   Require valid-user
</Location>

4° passo: creare il repository SVN

Adesso digitare i seguenti comandi per creare il nostro repository usando il nome myrepo. Naturalmente usatene uno più adatto alle vostre esigenze:

$ sudo mkdir -p /var/lib/svn/
$ sudo svnadmin create /var/lib/svn/myrepo

$ sudo chown -R www-data:www-data /var/lib/svn
$ sudo chmod -R 775 /var/lib/svn

5° passo: creare gli utenti

E’ possibile limitare e proteggere il nostro repository limitandone l’accesso solo agli utenti autorizzati. Scriviamo questi comandi per creare il primo utente:

$ sudo htpasswd -cm /etc/apache2/dav_svn.passwd admin

Aggiungiamo altri utenti:

$ sudo htpasswd -m /etc/apache2/dav_svn.passwd user1
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd user2

6° passo: accedere al repository dal browser web

Apriamo il browser e andiamo al seguente url:

http://example.com/svn/myrepo

Ci verrà chiesto di inserire le nostre credenziali di accesso (nome utente e password).

A questo punto non ci resta che eseguire il checkout del nostro repository in locale, aggiungere e modificare file, quindi inviare le modifiche al server (in gergo commit). Potremmo farlo da riga di comando ma suggerisco di usare gli strumenti integrati degli IDE di sviluppo oppure utilizzare un front-end specifico che si integri con l’ambiente desktop. In ambito Windows suggerisco di usare Tortoise SVN.

Backup sistema Linux con rsync

Per fare un backup completo dell’intero sistema Linux tramite l’utility rsync eseguire da terminale il comando:

$ sudo rsync -aAXv  --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/<backup_disk_mount_point>

Il comando esegue una copia completa della radice /, escludendo le directory /dev, /proc, /sys, /tmp, /run, /mnt, /media, /lost+found, sulla directory /mnt/<backup_disk_mount_point>.

Sostituire backup_disk_mount_point con il nome della directory dove è stato montato il disco esterno come destinazione del backup.

Nel dettaglio:

  • rsync – un’utility per la copia dei file sia in locale che in rete, standard sulla maggior parte delle distribuzioni Linux.
  • -aAXv – i files vengono trasferiti in modalità “archivio” mantenendo permessi, attributi, proprietà e link simbolici.
  • –delete – elimina  nelle destinazione i file non presenti nella sorgente.
  • –exclude – elenco delle directory da escludere dal processo di copia.
  • / – directory sorgente.
  • /mnt/<backup_disk_mount_point> – directory di destinazione.

La cosa più importante da tenere presente è quella di escludere la path della destinazione, altrimenti rsync entrerà in una sorta di loop infinito.

Ripristino

Per effettuare il ripristino è sufficiente rilanciare il comando invertendo sorgente e destinazione.

Convertire i filmati H.265/HEVC

La codifica H.265/HEVC porta con sé numerosi vantaggi, come il supporto a risoluzioni 8K, ma non viene ancora supportato a dovere dai Mac

Il successore della codifica H.264/MPEG-4 AVC (Advanced Video Coding), H.265/HEVC per l’appunto, offre la possibilità di comprimere i dati in modo efficace, senza perdere di qualità, o la possibilità di supportare risoluzioni 4K e 8K UHD fino a 8192 x 4320. Tuttavia, non viene ancora supportato a dovere e richiede inoltre molte risorse per la loro risoluzione. VLC, che spesso ci viene in aiuto, ancora non li riproduce in maniera fluida e senza artefatti.

Ecco allora la necessità di convertirli in un formato  più compatibile. Possiamo utilizzare FFmpeg a riga di comando:

$ ffmpeg -i inputfilename_h265.mp4 -c:a copy -c:v libx264 -preset slow -crf 18 outputfilename.mp4

sostituendo inputfilename_h265.mp4 con il nome del file H.265 nativo che si desidera convertire, e outputfilename.mp4 con il nome del file di destinazione che vogliamo creare in H.264.

Per chi non ce lo avesse già installato sul proprio Mac, è possibile farlo tramite MacPorts:

$ sudo port install ffmpeg +nofree

Il pacchetto si porta con sé molte dipendenze e a seconda dei casi l’installazione richiederà alcuni minuti.

Login remoto via SSH senza password

Per effettuare il login da remoto su un sistema Linux senza digitare ogni volta la password bastano i comandi ssh-keygen e ssh-copy-id e seguire le istruzioni descritte in questo articolo.

ssh-keygen permette di creare le chiavi pubbliche e private, mentre ssh-copy-id copia la chiave publica del client nella lista degli host autorizzati sul server remoto.

1° passo: creare le chiavi pubbliche e private sul client

Per prima cosa creiamo le nostre chiavi pubbliche e private sulla macchina client. Apriamo la console a riga di comando e digitiamo il comando ssh-keygen:

mark@local-host$ [Nota: qui siete nella console del client]
mark@local-host$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mark/.ssh/id_rsa):[Premere il tasto Enter]
Enter passphrase (empty for no passphrase): [Premere il tasto Enter]
Enter same passphrase again: [Premere il tasto Enter]
Your identification has been saved in /home/mark/.ssh/id_rsa.
Your public key has been saved in /home/mark/.ssh/id_rsa.pub.
The key fingerprint is:
33:b3:fe:af:95:95:18:11:31:d5:de:96:2f:f2:35:f9
mark@local-host

2° passo: copiare la cave pubblica sul server remoto

A questo punto copiamo la chiave pubblica appena creata sul server remoto tramite il comando ssh-copy-id:

mark@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
mark@remote-host's password: [Inserisci la password del server remoto seguito dal tasto Enter]
Now try logging into the machine, with "ssh 'remote-host'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

3° passo: login sul server remoto

Non ci resta che effettuare il login sul server remoto senza che ci venga richiesta la password di accesso:

mark@local-host$ ssh remote-host
Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
[Nota: SSH non richiederà di inserire la password.]
mark@remote-host$ [Nota: adesso sei nel prompt del server remoto]

Come cercare la posizione geografica di un indirizzo IP dalla riga di comando

Se si desidera cercare la posizione geografica di un indirizzo IP esistono diversi servizi online, come ad esempio Geo IP Tool. Tra questi è possibile provare il servizio ipinfo.io. A differenza di altri, ipinfo.io fornisce API di geolocalizzazione basate su JSON, quindi puoi facilmente cercare la geolocalizzazione dalla riga di comando, usando strumenti come curl.

Per esempio:

$ curl ipinfo.io/216.58.205.163

{
"ip": "216.58.205.163",
"hostname": "mil04s28-in-f3.1e100.net",
"city": "Mountain View",
"region": "California",
"country": "US",
"loc": "37.4192,-122.0570",
"postal": "94043",
"org": "AS15169 Google LLC"
}