C’è chi fedele solo a WeTransfer, altri (me compreso) che optano per Dropbox Transfer (dato che fa parte del servizio che già pago sia a livello aziendale che personale), poi ci sono una serie di servizi alternativi meno conosciuti che però possono andare benone quando si devono condividere rapidamente dei dati con qualcuno al di fuori della nostra rete, dati che – lo devo proprio dire? – non devono contenere riferimenti sensibili, in quel caso non bisogna mai utilizzare servizi che non siano sotto controllo (quanto più possibile) del mittente.
Transfer.sh è una di quelle valide alternative, con in più un particolare molto interessante: lo si usa da riga di comando.
“Easy file sharing from the command line”
E facile lo è sul serio, soprattutto se ti trovi a utilizzare un Terminale su macOS o Linux. I comandi si impartiscono in cURL e sono alla portata di chiunque, anche coloro che sono meno esperti e non vogliono diventare scemi a portare fuori da una VM o una sessione remota un file che devono poter poi recuperare da una diversa macchina.
# Upload using cURL $ curl --upload-file ./hello.txt https://transfer.sh/hello.txt https://transfer.sh/YhInCQ/hello.txt # Using the shell function $ transfer hello.txt ##################################################### 100.0% https://transfer.sh/Ijqda2/hello.txt
Se vuoi modificare i dettagli dell’upload (limitare il numero di download o modificare i giorni massimi di vita del file online) ti basterà apportare qualche modifica alla stringa di cURL upload, per capirci qui di seguito ti mostro come permettere un solo download del file e mantenerlo online al massimo 5 giorni (dopo i quali verrà cancellato definitivamente):
curl -H "Max-Downloads: 1" -H "Max-Days: 5" --upload-file HelloWorld.txt https://transfer.sh/HelloWorld.txt
Se lo strumento ti sembra utile e carino, puoi anche pensare di renderti la vita più semplice andandolo a integrare in .bashrc / .zshrc (o equivalente) così da richiamare il comando di trasferimento semplicemente utilizzando il comando “transfer“, ti basterà includere questo codice all’interno di /etc/bash.bashrc
(come dicevo poco fa):
transfer(){ if [ $# -eq 0 ];then echo "No arguments specified.\nUsage:\n transfer <file|directory>\n ... | transfer <file_name>">&2;return 1;fi;if tty -s;then file="$1";file_name=$(basename "$file");if [ ! -e "$file" ];then echo "$file: No such file or directory">&2;return 1;fi;if [ -d "$file" ];then file_name="$file_name.zip" ,;(cd "$file"&&zip -r -q - .)|curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name"|tee /dev/null,;else cat "$file"|curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name"|tee /dev/null;fi;else file_name=$1;curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name"|tee /dev/null;fi;}
A quel punto ti basterà ricaricare il file (source /etc/bash.bashrc
) e provare a lanciare un transfer HelloWorld.txt
per completare immediatamente l’upload e ottenere l’URL risultante.
Ci sono tanti altri esempi di utilizzo dello strumento e sono uno migliore e più interessante dell’altro, li trovi raccolti all’indirizzo transfer.sh/#samples (espandi la sezione per leggerli tutti).
Il progetto è completamente Open Source, disponibile su GitHub all’indirizzo github.com/dutchcoders/transfer.sh nel caso tu volessi installare una tua istanza privata su una macchina adatta, potrai sfruttare lo spazio messo a disposizione dalla macchina locale o – se preferisci e hai già un abbonamento da sfruttare – da S3 (Amazon), Google Drive o Storj. Le possibili applicazioni sono molteplici ed è facile pensare di poterle mettere in piedi (anche di particolarmente delicate) se si sceglie la via del “self-hosted” proteggendo la macchina che potrebbe ospitare il server di Transfer.sh. Speriamo solo non faccia la fine di Firefox Send che ancora oggi – sono onesto – mi manca un po’.
#StaySafe
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)