2013年5月4日星期六

树莓派折腾记录: sshfs 文件共享

文件共享 sshfs
apt-get install sshfs
使用 sudo sshfs -o allow_other -o reconnect gttnnn@Moonlit:/home/gttnnn/Dropbox /home/pi/dropbox
让树莓派默认用户可以使用 sshfs user@hostname:path mount_point 和 fusemount -u mount_point 命令: sudo usermod -aG fuse pi

网络连接时自动挂载,断网时 umount :在 /etc/network/if-up.d/ 和 /etc/network/if-down.d/ 下放置脚本。

编辑 /etc/fstab ,增加:
sshfs#gttnnn@Moonlit:/home/gttnnn/Dropbox /home/pi/dropbox fuse defaults,noauto,reconnect,allow_other,follow_symlinks 0 0
编辑 /etc/network/if-up.d/sshfs_mount ,内容为
#!/bin/bash
if [ "_$IFACE" != "_wlan0" ];then exit 0;fi
mount /home/pi/dropbox
编辑 /etc/network/if-down.d/sshfs_unmount ,内容为
#!/bin/bash
if [ "_$IFACE" != "_wlan0" ];then exit 0;fi
fusermount -u /home/pi/dropbox


====以下是折腾过程,可省略====
网络连接时自动挂载
方法一:不使用 fstab
编辑 /etc/network/if-up.d/sshfs_mount ,内容为
sshfs gttnnn@Moonlit:/home/gttnnn/音乐 /home/pi/music -o reconnect -o follow_symlinks -o allow_other -o nonempty
编辑 /etc/network/if-down.d/sshfs_unmount ,内容为
fusermount -u /home/pi/music
方法二:使用 fstab
编辑 /etc/fstab ,增加一行
sshfs#gttnnn@Moonlit:/home/gttnnn/音乐 /home/pi/music fuse defaults,noauto,reconnect,allow_other,follow_symlinks 0 0
编辑 /etc/network/if-up.d/sshfs_mount ,内容为
mount /home/pi/music
编辑 /etc/network/if-down.d/sshfs_unmount ,内容为
fusermount -u /home/pi/music

网络启动/断开脚本重复运行问题
看起来 /etc/network/if-up.d/ 和 /etc/network/if-down.d/ 的脚本好像跑了不止一遍。如果不加 nonempty 的选项,挂载会报错,卸载也报错。加了 nonempty 选项,在方法一里用 df 查看会发现这些分区被挂载了两遍,在方法二里 df 倒是正常了,卸载会报错。启动时总是会发生 connection reset by peer 超时又浪费时间又可怕——让人想起 GFW ,虽然这次墙真的是无辜躺枪——脚本重复运行是因为多个网络接口至少每个都跑一遍(见 https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1126560 的讨论)。
参考 http://linux.derkeiler.com/Mailing-Lists/Debian/2006-11/msg01618.htmlhttps://bugs.launchpad.net/ubuntu/+source/firestarter/+bug/132039 在脚本的开头加上
if [ "_$IFACE" != "_wlan0" ]; then exit 0; fi
就正常了。
update20130520: 关机或者重启的时候还是会报错,原因是系统先下了命令杀死所有进程,再关闭网络,这时候运行的网络断开脚本就会发现没什么可以做的了。

此方案也可以用于曲线救国实现在树莓派上使用 dropbox ,前提是有另一台能跑 dropbox 的电脑,树莓派能 ssh 过去。
--
≋ὥ≋
触手什么的最有爱了~

没有评论:

发表评论