Bash Remote-Server Datei kopieren Freigegebene URL

Bash: Dateien auf Remote-Server kopieren und freigegebene URL erhalten

Stellt vor, wie man Dateien auf einen Remote-Server kopiert und eine URL zum Teilen in Bash erhält. Nach dem Kopieren von lokalen Dateien auf einen Remote-Server wird die URL in die Zwischenablage kopiert. Praktisch, wenn man Textdateien oder Mediendateien schnell teilen möchte. Der Servername ist für meine Xserver-Umgebung...

Shou Arisaka
3 Min. Lesezeit
14. Okt. 2025

Stellt ein Programm vor, um Dateien auf einen Remote-Server zu kopieren und eine URL zum Teilen in Bash zu erhalten.

Nach dem Kopieren von lokalen Dateien auf einen Remote-Server wird die URL in die Zwischenablage kopiert. Praktisch, wenn man Textdateien oder Mediendateien schnell teilen möchte. Der Servername ist für meine Xserver-Umgebung, also bitte entsprechend ändern.


# Dateien auf Remote-Server kopieren und URL zum Teilen erhalten z.B. Bilder,Videos,Dateien,etc
sharefile(){

  : e.g. sharefile "/mnt/e/_downloads/MOV_0070.mp4"

  # filepath="/mnt/e/_downloads/MOV_0070.mp4"
    filepath=$(realpath "$1")

  cp "${filepath}" "${filepath}.tmp"

  filedir=$(dirname "$filepath")
  filename=$(basename -- "$filepath")
  extension="${filename##*.}"

  random=$(random|chomp)

  if [[ $string =~ .*\..* ]]
  then
  mv "$filepath" "$filedir/${random}"
  newFilepath="$filedir/${random}"
  newFilename="${random}"
  touch "${filedir}/${filename} is ${random}.is.tag"
  else
  mv "$filepath" "$filedir/${random}.$extension"
  newFilepath="$filedir/${random}.$extension"
  newFilename="${random}.$extension"
  # set -x
  touch "${filedir}/${filename} is ${random}.${extension}.is.tag"
  # set +x
  fi

  rsync -e 'ssh -p 10022 -i ~/.ssh/yuis.key' -r "${newFilepath}" [email protected]:"~/yuis.xsrv.jp/public_html/data/"

  mv "${filepath}.tmp" "${filepath}"

  echo "https://yuis.xsrv.jp/data/${newFilename}" | clip && printf "\n\n${blu}https://yuis.xsrv.jp/data/${newFilename}${end} is clipped.\n\n"

}

Dieses Shell-Skript definiert eine Funktion sharefile, um Dateien auf einen Remote-Server zu kopieren und eine URL zum Teilen zu erhalten. Im Folgenden finden Sie eine schrittweise Erklärung, wie das Skript funktioniert.

  1. Die Funktion sharefile wird definiert. Diese Funktion nimmt einen Dateipfad als Argument.

  2. filepath=$(realpath "$1"): Ruft den übergebenen Dateipfad ab und speichert ihn in $filepath. Der Befehl realpath konvertiert relative Pfade in absolute Pfade.

  3. cp "${filepath}" "${filepath}.tmp": Kopiert die Originaldatei und erstellt eine temporäre Datei mit der Erweiterung .tmp. Dies sichert die Originaldatei vorübergehend.

  4. filedir=$(dirname "$filepath"): Speichert den Verzeichnispfad der Datei in filedir.

  5. filename=$(basename -- "$filepath"): Speichert den Basisnamen (Dateinamen) der Datei in filename.

  6. extension="${filename##*.}": Speichert die Dateierweiterung in extension. Diese Zeile führt eine Reihe von String-Operationen aus, um die Erweiterung zu extrahieren.

  7. random=$(random|chomp): Erzeugt eine zufällige Zeichenkette und speichert sie in der Variablen random. Da die Funktion random jedoch im Skript nicht definiert ist, wird diese Zeile einen Fehler erzeugen.

  8. if [[ $string =~ .*\..* ]]: Eine bedingte Anweisung beginnt, aber $string ist im Skript nicht definiert, daher enthält diese eine unbekannte Variable. Der Zweck dieser bedingten Anweisung ist unklar.

  9. mv "$filepath" "$filedir/${random}": Benennt die Originaldatei in einen zufälligen Namen um. Nach der Umbenennung wird der neue Dateipfad in newFilepath und der neue Dateiname in newFilename gespeichert. Außerdem wird der Befehl touch verwendet, um die Datei zu taggen.

  10. rsync -e 'ssh -p 10022 -i ~/.ssh/yuis.key' -r "${newFilepath}" [email protected]:"~/yuis.xsrv.jp/public_html/data/": Verwendet den Befehl rsync, um die neue Datei auf den Remote-Server zu kopieren. Dieser Befehl verbindet sich über SSH und kopiert die Datei in das angegebene Remote-Verzeichnis.

  11. mv "${filepath}.tmp" "${filepath}": Stellt die vorübergehend erstellte Sicherungsdatei (mit .tmp-Erweiterung) auf den ursprünglichen Dateinamen wieder her.

  12. echo "https://yuis.xsrv.jp/data/${newFilename}" | clip && printf "\n\n${blu}https://yuis.xsrv.jp/data/${newFilename}${end} is clipped.\n\n": Gibt die freigegebene URL der neuen Datei aus und kopiert sie in die Zwischenablage. Zeigt auch eine Nachricht an, aber ${blu} und ${end} repräsentieren Farbcodes, die verwendet werden, um die Textfarbe zu ändern.

Wie oben beschrieben, definiert dieses Shell-Skript eine Funktion sharefile, um Dateien auf einen Remote-Server zu kopieren und eine URL zum Teilen zu erhalten. Diese Funktion nimmt einen Dateipfad als Argument. Um diese Funktion zu verwenden, gehen Sie wie folgt vor:

sharefile "/mnt/e/_downloads/MOV_0070.mp4"

Diesen Artikel teilen

Shou Arisaka 14. Okt. 2025

🔗 Links kopieren