So laden und teilen Sie Dateien vom Linux-Terminal mit Transfer.sh

Heutzutage ist der Austausch von Dateien so unkompliziert wie nie zuvor. Dank Diensten wie Dropbox, Google Drive und OneDrive lassen sich Daten schnell zwischen verschiedenen Standorten verschieben – es sei denn, man nutzt das Terminal. Bei der Verwendung des Terminals greift man oft auf SFTP oder ähnliche, ältere Methoden zurück. Hier kommt TransferSH ins Spiel: ein Werkzeug, das speziell für das Hochladen und Teilen von Dateien über das Linux-Terminal entwickelt wurde.

Hinweis: Am Ende dieses Beitrags finden Sie ein Video-Tutorial.

Die manuelle Nutzung von Transfer.sh

Transfer.sh bietet eine Weboberfläche, über die Dateien per Browser hochgeladen und geteilt werden können. Der Dienst ist auch über die Kommandozeile zugänglich, was das Teilen von Dateien direkt vom Terminal aus ermöglicht. Um Dateien über das Linux-Terminal mit Transfer.sh zu teilen, wird Curl benötigt.

Curl installieren

Ubuntu:
sudo apt install curl
Debian:
sudo apt-get install curl
Arch Linux:
sudo pacman -S curl
Fedora:
sudo dnf install curl
OpenSUSE:
sudo zypper install curl

Nutzer weniger gängiger Linux-Distributionen sollten keine Probleme haben, das Curl-Programm zu finden, da es weit verbreitet ist. Installieren Sie es einfach über Ihren Paketmanager, indem Sie nach „curl“ suchen. Falls es aus irgendeinem Grund nicht verfügbar ist, können Sie es hier herunterladen.

Hochladen mit Curl

Die Interaktion mit transfer.sh über Curl erfordert einen längeren Befehl. Hier ist, wie es funktioniert:

Zunächst wählen Sie eine Datei zum Hochladen aus. Verwenden Sie „find“ oder „locate“ im Terminal oder suchen Sie die Datei mit dem Dateimanager und merken Sie sich ihren Speicherort. Navigieren Sie anschließend mit dem Befehl „cd“ zu diesem Speicherort. In diesem Beispiel laden wir „test.mp3“ aus dem Ordner „Dokumente“ hoch.

cd ~/Documents

Das Terminal befindet sich nun im Verzeichnis, in dem sich test.mp3 befindet. Verwenden Sie diesen Befehl, um die Datei hochzuladen:

curl --upload-file ./test.mp3

Erstellen Sie nun die URL für die Nutzung von transfer.sh. Beachten Sie den Dateinamen (einschließlich der Erweiterung) und schreiben Sie ihn folgendermaßen:

https://transfer.sh/test.mp3

Das vollständige Ergebnis sollte so aussehen:

curl --upload-file ./test.mp3 https://transfer.sh/test.mp3

Curl sendet die Datei an Transfer.sh und gibt eine URL zurück. Öffnen Sie diese URL, um die Datei herunterzuladen, oder geben Sie sie an die Person weiter, mit der Sie die Datei teilen möchten.

Transfer.sh Terminal Alias

Das manuelle Hochladen mit Curl ist zwar nützlich, aber nicht ideal. Es gibt keine Information über den Fortschritt des Uploads und es ist mühsam, sich den Befehl zu merken. Aus diesem Grund wurde ein Bash-Alias erstellt. Dieser Alias erlaubt es dem Benutzer, nach der Einrichtung, Dateien und Ordner mit einem einzigen Wort hochzuladen.

Um den Alias einzurichten, öffnen Sie Ihre BashRC-Datei. Beachten Sie, dass die BashRC-Datei jedes Benutzers einzeln angepasst werden muss.

nano ~/.bashrc

Gehen Sie mit Nano zum Ende der Datei und fügen Sie den Transfer SH-Aliascode ein. Achten Sie darauf, dass der gesamte Code korrekt eingefügt wird, da der Alias sonst nicht funktioniert.

Hinweis: Das Einfügen mit Nano über die Zwischenablage erfolgt mit STRG + UMSCHALT + V.

transfer() {
 # check arguments
 if [ $# -eq 0 ];
 then
 echo "No arguments specified. Usage:necho transfer /tmp/test.mdncat /tmp/test.md | transfer test.md"
 return 1
 fi

# get temporarily filename, output is written to this file show progress can be showed
 tmpfile=$( mktemp -t transferXXX )

# upload stdin or file
 file=$1

if tty -s;
 then
 basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g')

if [ ! -e $file ];
 then
 echo "File $file doesn't exists."
 return 1
 fi

if [ -d $file ];
 then
 # zip directory and transfer
 zipfile=$( mktemp -t transferXXX.zip )
 cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile
 curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile
 rm -f $zipfile
 else
 # transfer file
 curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile
 fi
 else
 # transfer pipe
 curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile
 fi

# cat output link
 cat $tmpfile
 echo ""
 # cleanup
 rm -f $tmpfile
 }

Speichern Sie die Datei ~/.bashrc nach dem Einfügen des Codes mit STRG + O und starten Sie Ihren PC neu, damit die Änderungen wirksam werden.

Verwendung des Terminal-Alias zum Hochladen

Das Hochladen mit dem TransferSH-Alias ist deutlich einfacher als die manuelle Nutzung von Curl. In diesem Beispiel verwenden wir wieder die Datei test.mp3 aus dem Ordner „Dokumente“.

Schritt 1: Navigieren Sie im Terminal zu der Datei/dem Ordner, die Sie hochladen möchten.

cd ~/Documents

Schritt 2: Starten Sie den Upload-Vorgang.

transfer test.mp3

oder für einen Ordner:

transfer file_folder

Schritt 3: Warten Sie, bis das Terminal die Datei hochgeladen hat. Ein Fortschrittsbalken wird angezeigt und nach Abschluss des Uploads wird ein Download-Link ausgegeben.

Herunterladen mit Curl

Curl ist nicht nur ein Upload-Tool, sondern auch ein Download-Tool. So laden Sie eine mit Transfer.sh hochgeladene Datei herunter:

Kopieren Sie den Download-Link, den Sie vom Upload-Tool erhalten haben, und gehen Sie wie folgt vor:

curl https://transfer.sh/vN79X/test.zip > test.zip

Ersetzen Sie den Namen nach > durch den Namen in Ihrem Download-Link. Dadurch wird der Download auf Ihrem PC entsprechend benannt. Es ist möglich, den Namen zu ändern, wird aber nicht empfohlen.

Herunterladen mit Wget

Trotz der Beliebtheit von Curl, bevorzugen einige Nutzer Wget zum Download, da es einfacher erscheint. Auch Wget kann Transfer SH-Links problemlos herunterladen. Hier ist, wie es funktioniert:

wget https://transfer.sh/vN79X/test.zip

Fazit

Es kommt nicht häufig vor, aber gelegentlich, wenn Sie auf einem Server arbeiten, benötigen Sie schnell Zugriff auf eine Datei von einem anderen Computer. Das Einrichten von SSH, das Einloggen in FTP usw. sind oft umständlich. Daher ist TransferSH ein sehr nützliches Tool, da es das Abrufen von Dateien jeder Größe direkt über die Befehlszeile erleichtert.