Una forma elegante de compartir archivos de gran tamaño desde la consola de Linux

Linux te préserve des virus

Por trabajo, recientemente he tenido que compartir archivos de gran tamaño desde Linux, normalmente lo que hacia era descargarlos a mi PC y los enviaba por email, pero cuando son archivos de varios GB o de muchos MB, descargar y subir a servicios como WeTransfer es una perdedera de tiempo.

En vista de esta necesidad inicie mi búsqueda por un servicio de cultura libre, y me encontré con Transfer.sh que es una maravilla por su integración con todo tipo de aplicaciones y sobre todo por que puedes cargar archivos directamente desde Linux de una forma muy elegante.

Como subir archivos a transfer.sh desde la consola linux?

Usando CURL lo haces con el siguiente comando:

curl --upload-file /ruta/archivo.zip https://transfer.sh/archivo.zip

Lo que retornara algo como:

https://transfer.sh/66nb8/archivo.zip

Personalmente subo archivos .zip o .rar para que quienes reciban estos archivos tengan un menor tiempo de descarga, pero Transfer.sh tiene muchas opciones interesantes como la carga multiple de archivos, comprimir archivos, encriptar archivos, escanear malware, entre otras que puedes ver en su sitio web que esta todo bien documentado en la sección de ejemplos de uso.

Adicionalmente, puedes limitar el tiempo de duración del enlace y cuantas descargas pueda recibir el enlace, muy útil para garantizar quien descarga el archivo.

curl -H "Max-Downloads: 1" -H "Max-Days: 5" --upload-file ./archivo.zip https://transfer.sh/archivo.zip

Podremos notar los parámetros Max-Downloads y Max-Days y personalizar sus valores.

Como subir un archivo para escanear Virus o Malware?

Transfer.sh ofrece la posibilidad de escanear un fichero con Clamav, con el siguiente comando:

curl -X PUT --upload-file /ruta/archivo.txt https://transfer.sh/archivo.txt/scan

O bien puedes escanearlo con VirusTotal de la siguiente forma:

curl -X PUT --upload-file /ruta/archivo.txt https://transfer.sh/archivo.txt/virustotal

Una forma elegante de compartir archivos con Transfer.sh

Puedes incorporar Transfer.sh para que con solo tipear en la consola transfer /ruta/archivo.zip  puedas cargar archivos.

Para hacer esta implementación debes editar el archivo bashrc o zshrc, con los comandos vim o nano. Personalmente lo hice así:

nano ~/.bashrc

y agrega al final lo siguiente:

# Cargar archivos a Transfer.sh usando CURL
transfer() {
    curl --progress-bar --upload-file "$1" https://transfer.sh/$(basename $1) | tee /dev/null;
}
alias transfer=transfer

Nota que se adiciono el parámetro –progress-bar  que muestra el progreso de la carga del archivo.

Tambien puedes usar wget si lo deseas, las lineas a agregar serian:

# Cargar archivos a Transfer.sh usando WGET
transfer() {
    wget -t 1 -qO - --method=PUT --body-file="$1" --header="Content-Type: $(file -b --mime-type $1)" https://transfer.sh/$(basename $1);
}
alias transfer=transfer

Con esto, bastara con ejecutar transfer /ruta/archivo en tu consola para cargar un archivo. El sistema te devolverá un URL que puedes enviar a quien desee descargarlo.

Espero la información les facilite su trabajo. Salud!