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:
- mounten:
#!/bin/sh
### File: /opt/bin/umount_sshfs - root:root - chmod 775
### Variablen belegen,ggf. Schleife bauen:
sshfs -o reconnect "${UserName}@${ServerName}${ServerDir}" "${LocalDir}";
- umount-Skript:
#!/bin/sh
### File: /opt/bin/umount_sshfs - root:root - chmod 775
### Variablen belegen, ggf. Schleife bauen
umount "${LocalDir}";
- 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.