我在 Linux 服务器上有一个远程文件系统的 sshfs 连接设置。我正在从本地服务器到 ftpfs 文件系统进行 rsync。由于此设置的性质,我无法chown
对 sshfs 文件系统进行任何操作。
当我执行 rsync 时,它会在传输文件后尝试 chown 所有文件。这会导致 chown 错误,即使它可以很好地传输文件。
使用 rsync,有没有办法告诉它不要尝试 chown 文件?如果我 rsync 像 1000 个文件,我最终会得到 1000 个chown: permission denied (error 13)
错误的日志。我知道得到这些错误不会有任何伤害,因为文件的所有权是由 sshfs 配置本身决定的,但最好不要得到它们。
在我的本地主机上,alpha
我有一个foo
通过 sshfs 映射到主机的目录,bravo
如下所示:
$ sshfs charlie@bravo:/home/charlie ~/foo
Run Code Online (Sandbox Code Playgroud)
但是,在主机上bravo
还有另一个用户 delta,我想sudo /bin/su
成为它,以便我可以在bravo:/home/delta
. delta
可能无法通过 ssh 登录;由于我无法改变的原因,一旦你在机器上,你只能 sudo 到 delta。
通常我会 ssh 进入bravo
,然后 sudo 到 delta,但我想知道当我通过 ssh 安装了查理的主目录时,是否有任何方法可以做到这一点。
我使用 SSHFS 在远程服务器上挂载一个目录。客户端和服务器上都有一个用户 xxx。两个盒子上的 UID 和 GID 是相同的。
我用
sshfs -o kernel_cache -o auto_cache -o reconnect -o compression=no \
-o cache_timeout=600 -o ServerAliveInterval=15 \
xxx@yyy.yyy.yyy.yyy:/mnt/content /home/xxx/path_to/content
Run Code Online (Sandbox Code Playgroud)
将目录挂载到远程服务器上。当我在客户端上以 xxx 身份登录时,我没有任何问题。我可以 cd 进入 /home/xxx/path_to/content。
但是当我以另一个用户 zzz 登录客户端时
$ ls -l /home/xxx/path_to
Run Code Online (Sandbox Code Playgroud)
我明白了
d????????? ? ? ? ? ? content
Run Code Online (Sandbox Code Playgroud)
并在
$ ls -l /home/xxx/path_to/content
Run Code Online (Sandbox Code Playgroud)
我得到
ls: cannot access content: Permission denied
Run Code Online (Sandbox Code Playgroud)
当我做
$ ls -l /mnt
Run Code Online (Sandbox Code Playgroud)
在我得到的远程服务器上
drwxr-xr-x 6 xxx xxx 4096 2011-07-25 12:51 content
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?权限对我来说似乎是正确的。我错了吗?
我使用 SSHFS 在我的主机上挂载一个远程文件系统,我希望能够从 Docker 容器内部访问它。
我挂载远程文件系统
sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) user@remote:directory /path/to/sshfs
而且,使用 Docker,根据我的使用情况,我收到以下错误--mount
:
docker run -it -v /path/to/sshfs:/target myimage bash
docker: Error response from daemon: error while creating mount source path '/path/to/sshfs': mkdir /path/to/sshfs: file exists.
Run Code Online (Sandbox Code Playgroud)
或-v
:
docker run -it --mount src=/path/to/sshfs,target=/target,type=bind myimage bash
docker: Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /path/to/sshfs.
See 'docker run --help'
Run Code Online (Sandbox Code Playgroud)
是否可以将 sshfs 挂载点挂载到容器中?
设想:
我试过:先连接到 WiFi,然后断开以太网;并先断开以太网,然后再连接到 WiFi。这两种方法都不起作用。在使用 Ubuntu 和 OS X 服务器以及两个操作系统选项以及客户端时也尝试过。没运气。
似乎我需要某种方式告诉我的 SSH 连接它应该开始使用新连接的网络接口而不是旧的断开连接的接口。有任何想法吗?
我意识到我可以整天呆在 WiFi 上,但我不想那样做。我也意识到我可以只在远程服务器上的屏幕会话中工作,然后在更改接口后重新连接到该屏幕会话,但我也不想这样做。例如,我可能正在通过管道传输一些大命令,例如通过 SSH 进行数据库转储,或者我可能通过 SSHFS 打开文件,或者我可能只是想避免重新连接的麻烦
如果有人通过 ssh 登录服务器以使用 shell,可以快速使用 last|w|who 来显示登录用户。如果有人从另一台计算机通过 sshfs 在同一台服务器上挂载目录 last|w|who 不显示连接。是否有类似于 last|w|who 的命令可以显示服务器上的当前 sshfs 安装?
我有一个来自 Ubuntu Server VM 来宾的 SSHFS 挂载,挂载了一个主机 Mac OS X 目录。直接在 Mac OS X 主机目录中进行的更改大约需要 5 - 10 秒才能反映在 Ubuntu Server VM 来宾安装中。
我正在使用以下命令...
sshfs 用户@主机:~/主机
哪些附加选项(如果有)可以改善这种延迟?
使用 NAS 盒作为 24/7 文件服务器,我想使用 sshfs 从 Ubuntu 9.04 桌面连接到它。目前,我在桌面的 fstab 中有这一行:
sshfs#jldugger@storage:/mnt/HD_a2/ /mnt/storage fuse comment=sshfs,auto,users,exec,uid=1000,gid=1000,allow_other,reconnect,transform_symlinks,BatchMode=yes,fsname=sshfs#jldugger@storage/mnt/HD_a2/ 0 0
Run Code Online (Sandbox Code Playgroud)
我可以确认它适用于 mount /mnt/storage
。我需要的是在启动时安装它的一些方法,但在建立网络连接之后。
我是多用户服务器的系统管理员,我们系的学生在那里有 shell 帐户。我们的一位用户要求我们sshfs
在其上安装。我正在讨论sshfs
按照建议进行安装是否明智。
我主要担心的是 FUSE 安装是否会降低我们的服务器的可靠性。根据我的经验,当 NFS 服务器突然变得不可用时,服务器可能会发生不好的事情——平均负载激增,你可能无法干净地卸载它,以至于可能需要硬重启。如果安装了 FUSE 的服务器突然消失,清理烂摊子有多难?我应该考虑其他任何可能的灾难或陷阱吗?
至少对于 NFS,只有 root 可以挂载,我们可以选择挂载我们认为相当可靠的 NFS 服务器。
让我们假设我们的用户没有敌意,但可能会不小心做出愚蠢的事情。此外,我并不真正担心他们可能挂载的文件系统的内容,因为我们的用户已经拥有 shell 访问权限并且可以将他们想要的任何内容复制到他们的主目录中。
目前,我正在处理的项目的代码库远程位于公司服务器上。它必须保持这样。远程git
存储库也不能公开。
我目前的设置是:
VPN
sshfs
以挂载代码的副本ssh
到远程服务器并在git
那里运行命令这样做的问题是,VPN 不时sshfs
掉线,所以我的安装中断了,我的 IDE 冻结了。我所做的是手动重新连接 VPN,然后sshfs
再次运行,然后重新开始工作。
但随着VPN
跌倒的次数增多,它会变得很烦人。
所以我想知道是否有sshfs
某种缓存的任何设置,这将使我能够工作,并且只有在 VPN 恢复时才同步更改。
这可能没有意义,因为如果远程驱动程序不可用,则没有任何可写入的内容。那么使用某种watch
东西并用于rsync
以双向方式移动更改的不同设置呢(当我保存文件时,或者当我这样做时git pull
)
我不能只是 git clone,因为我无法重现整个环境以“本地”工作(数据库和其他东西)
代码必须在他们的服务器中,为了让我测试/查看我的工作,我必须访问一个 URL,即我的沙箱。每次我想查看我的更改时,我都无法 git push。