Raketenwilli: Software zum Entwickeln und Testen

Beitrag lesen

Zweck Linux Windows MacOS Android
Dateisynchronisation Filezilla Filezilla
TotalCommander Totalcommander Totalcommander
sshfs sshfs-win sshfs Totalcommander
Editor Pluma Edit
Bluefish Notepad++
Geany Geany Geany
  • Man sollte auch einen Blick auf rsync werfen.

Mit sshfs kann man ein entferntes Verzeichnis unter komfortablen und modernen Betriebssystemen in das eigene Dateisystem einbinden (Windows: Dafür einen Laufwerksbuchstaben vergeben.)

Zu sshfs auf dem Client:

Linux und Mac können das echt komfortabel: sshfs muss man allerdings installieren (das ist ein Paket) und einrichten:

  1. mounten:
#!/bin/sh

### File: /opt/bin/umount_sshfs  - root:root - chmod 775
### Variablen belegen,ggf. Schleife bauen:

sshfs -o reconnect "${UserName}@${ServerName}${ServerDir}" "${LocalDir}";
  1. umount-Skript:
#!/bin/sh

### File: /opt/bin/umount_sshfs  - root:root - chmod 775 
### Variablen belegen, ggf. Schleife bauen

umount "${LocalDir}";
  1. Erlaubnis, das ohne Passwort als root zu entladen:
# FILE: /etc/sudoers.d/umount_sshfs - root:root - chmod 660 
### Hilfe: man 5 sudoers
USERNAME_AS_TEXT ALL=(ALL:ALL) NOPASSWD: /opt/bin/umount_sshfs

umount dann mit sudo /opt/bin/umount_sshfs

Für den oder die Mounts kann man sich Starter mit hübschen Icons ins Startmenü und/oder auf den Desktop legen. Entweder im Terminal ausführen oder Ausgaben mit Zenity machen.

Beispiel: Mein vollständiges Skript zum Mounten mehrerer entfernter Verzeichnisse:

#!/bin/bash
# mountServers

UserServerList="user@host1:// user@host2:// user@host3://"; 
BaseDir="/home/${USER}/mounts";

errors=0;
counter=0;

#set -x

for UserServer in ${UserServerList}; do
	ServerName=$(echo -n "${UserServer}" | sed -E 's/.*@//' | sed -E 's/\:.*//' );
	UserName=$(echo -n "${UserServer}" | sed -E 's/@.*//');
	ServerDir=$(echo -n "${UserServer}" | sed -E 's/.*:\/\///');
	ServerDir=$(echo -n "://${ServerDir}");
	LocalDir="${BaseDir}/${ServerName}";
	#echo ServerName: ${ServerName};
	#echo UserName  : ${UserName};
	#echo ServerDir : ${ServerDir};
	#echo LocalDir  : ${LocalDir};
	#echo "Mounte ${UserName}@${ServerName}:${ServerDir} nach ${LocalDir}";


	if [ ! -d "${LocalDir}" ]; then
		if mkdir -p "${LocalDir}"; then
			echo "Fatal: Problem beim Anlegen des Verzeichnisses ${dir}. Das Mounten wird übersprungen.";
			errors=$(($errors+1));
		fi
	fi
	if [ -d "${LocalDir}" ]; then
		echo "Mounte ${UserName}@${ServerName}:${ServerDir} nach ${LocalDir}";
		sshfs -o reconnect "${UserName}@${ServerName}${ServerDir}" "${LocalDir}";
		e=$?;
		if [ 0 -ne $e ]; then
			echo -e ".. Fehler.\n";
		else
			echo -e ".. gelungen.\n";
		fi
		errors=$(($errors+$e));
	fi
done

if [ 0 -lt $errors ]; then
    echo
    echo "    +-----------------------------+";
    echo "    | Es sind Fehler aufgetreten! |";
    echo "    +-----------------------------+";
    echo "       [Enter]";
    read a
else 
    echo
    echo "    +-----------------------------------+";
    echo "    | Es sind keine Fehler aufgetreten! |";
    echo "    +-----------------------------------+";
    sleep 1
fi

SSHFS auf dem Server?

In /etc/ssh/sshd_conf sollte ein Zeile wie

Subsystem       sftp    /usr/lib/openssh/sftp-server

stehen (und kein Kommentar sein). Das entspricht dem verbreiteten Standard bei allen mir bekannten Linux-Distributionen. Natürlich muss der ssh-Dienst laufen und darf nicht von einer Firewall blockiert werden. Letzteres sollten Nutzer von RedHat-artigen Distros im Auge haben.