我想将数据从 Windows (Vista) 计算机备份到 Synology NAS (210j)。NAS 支持 FTP、SMB、NFS,还允许设置 rsync 守护程序。
我想将不同的文件夹备份到 NAS,但我更喜欢使用硬链接方法来节省磁盘空间(就像这个脚本一样)。使用此方法,将为每个备份创建一个新文件夹,但如果该文件已存在于目标上,则只会创建一个硬链接。
Synology 设备上的文件系统是 ext3,所以我可能无法使用rsyncbackup,因为它是为 NTFS 制作的。是否有另一种方法可以通过硬链接支持进行此备份?
我有两台 Linux 主机(都运行 Ubuntu 10.04),我希望其中一台能够访问另一台的部分文件系统。即我希望remote1能够访问remote2的文件:/home/username
这只是为了允许我以读写方式访问另一台计算机上的主目录,并且其他用户不需要也能够访问它。
每个主机上使用的“用户名”ID 都不同,原因我不会详细说明(同样,ADS 等)。
我尝试过 Samba,但发现它不可靠。例如,我有一个程序可以监视目录并更新大约 12,000 个文件的列表。我发现这个列表不断变化,文件丢失,有些文件随机无法读取。太不靠谱了。
我在remote1上有一些运行良好的东西:
sshfs remote2:/home/username ~/remote2 -o idmap=user -o uid=$(id -u) -o gid=$(id -g)
Run Code Online (Sandbox Code Playgroud)
这在一段时间内非常有效。不幸的是,remote1 是一台笔记本电脑,并且经常与 LAN 断开连接。当安装这个 sshfs 文件系统时,这似乎完全破坏了一切,并且通常需要重新启动才能恢复。
我开始研究 NFS,但几年前我遇到了有关用户 ID 映射的问题。当时,我发现有一个用户空间 NFS 服务器可以处理这个问题,但它有很多自己的问题。但那是 NFSv3。NFSv4“内核服务器”可以处理不同的用户 ID 并在它们之间正确映射吗?我真的不想使用 NIS,而且实际上我也无法更改用户 ID——它们是通过外部方式设置的。
另外,NFS 如何处理“不可靠”的网络连接?它会自动重新连接还是共享会被破坏,直到重新安装为止?
像 CIFS 这样的东西怎么样?这可以应对经常出现的、不可预测的网络故障吗?这可能会遇到与 Samba 相同的问题,但如果合适的话值得一试。
我还应该考虑其他选择吗?
我有一台运行 NFS4 服务器并导出所有用户的主目录的服务器。当用户通过 LAN 或 WLAN 直接访问服务器时,此设置非常有效。但是,如果笔记本电脑用户想要在无法访问服务器的远程位置登录,则登录将失败。
有什么方法可以准备 NFS 主目录以供离线使用吗?当笔记本电脑可以访问服务器时将主目录与服务器同步,并在服务器无法访问时使用主目录的最新副本?
我正在尝试通过 LAN 挂载 NFS 共享:
服务器已经成功地将 NFS 共享导出到其他 Linux 机器,所以我很确定它没有问题。我/etc/exports
为新的 Windows 机器添加了一个条目并重新启动了nfs-server
服务。
在 Windows 机器上,我在“添加/删除程序”中启用了以下内容:
然后,按照此处的指南,我尝试运行以下命令来挂载 NFS 共享,以便它显示为Z:\
驱动器:
mount //192.168.1.99/data/authorized Z:
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
cmdlet New-PSDrive at command pipeline position 1
Supply values for the following parameters:
Root:
Run Code Online (Sandbox Code Playgroud)
它正在等待我为“Root:”输入一些东西。我猜这意味着 NFS 共享根目录,所以我输入了它 ( /data/authorized
),尽管它应该已经从我的初始命令中获取了。
那是我收到此错误的时候:
New-PSDrive : Cannot find a provider with the name 'Z:'.
At line:1 char:6
+ mount …
Run Code Online (Sandbox Code Playgroud) 我有一台 QNAP TS-110,可以通过 NFS 从 Ubuntu 系统访问它。
我猜想典型家庭网络上的 NFS 不使用任何用户身份验证。我读过很多地方,发现 Linux 机器和 NAS 上的用户具有相同的 UID 和/或 GID 很重要。
uid=1000(me) gid=1000(me)
.uid=500 gid=100
我认为这就是我反复遇到访问问题的原因。(是这样吗?)
我的计划是通过 SSH 进入 NAS 并使用
usermod -u <newuid> -g<newgid> <username>
Run Code Online (Sandbox Code Playgroud)
问题出在NAS上没有usermod
安装。
在it.toolbox.com上,我读到我可以简单地/etc/passwd
使用/etc/group
所需的 UID 和 GID 进行编辑。
Fedora 论坛中有很多关于事后如何修复文件的讨论。
我现在的问题是:
/etc/passwd
和分组吗?chown -R --from=500:500 1000:1000 /path/*
配置文件更改后,对所有文件使用是否正确?我确实在我的 debian 7 服务器上设置了一个 nfs 共享,并试图将它安装在 Windows 7 机器上。
我尝试了以下方法:
C:\Users\David>mount \\192.168.178.240\backups Y:
Network Error - 53
Type 'NET HELPMSG 53' for more information.
C:\Users\David>mount 192.168.178.240:/backups Y:
Network Error - 53
Type 'NET HELPMSG 53' for more information.
Run Code Online (Sandbox Code Playgroud)
当我运行时,NET HELPMSG 53
它告诉我找不到网络路径。
C:\Users\David>showmount -e 192.168.178.240
Exports list on 192.168.178.240:
/backups 192.168.0.0/255.255.255.0
Run Code Online (Sandbox Code Playgroud)
如您所见,它确实存在。Windows 7 机器的 IP 地址是 192.168.137.252,因此它位于正确的子网中。
/etc/exports 如下:
root@debiansrv:~# grep backups /etc/exports
/backups 192.168.0.0/255.255.255.0(rw)
Run Code Online (Sandbox Code Playgroud) 我通过 /etc/fstab 挂载 NFSv4 导出并挂载和使用 nautilus 中的共享文件夹。
有两个问题:
我该如何解决这个问题?
/etc/export
在服务器上
/export/share 192.168.0.0/24(rw,sync,insecure,no_subtree_check,anonuid=1000,anongid=1000)
Run Code Online (Sandbox Code Playgroud)
/etc/fstab
在客户端:
server:/share /mnt nfs4 soft,tcp
Run Code Online (Sandbox Code Playgroud) 我试图在我的 NixOS 配置中声明一个绑定安装。我正在尝试下面的配置片段,但是当我对其进行测试时(使用nixos-rebuild test
),它会将操作系统发送到恢复模式。需要明确的是,我也希望/data
能够联系到/srv/nfs
。
#
# /etc/nixos/configuration.nix
#
fileSystems."/data" = {
device = "/dev/disk/by-uuid/bobloblaw";
fsType = "btrfs";
};
fileSystems."/srv/nfs" = {
device = "/data";
fsType = "bindfs";
};
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
我是 Docker 的新手,我想用它来为我的代码获得一个受控的编译环境。
我已经有了一个包含我需要的所有工具的 Docker 镜像。我目前的问题如下:
这是我首先尝试的(将源文件夹作为卷运行容器)和我得到的错误:
[mbrandalero@machine ~]$ docker run -it --cap-add sys_admin -v "/homes/mbrandalero/src:/usr/local/src/" mbrandalero/my-image bash
/usr/bin/docker-current: Error response from daemon: error while creating mount source path '/homes/mbrandalero/src': mkdir /homes/mbrandalero/src: permission denied.
Run Code Online (Sandbox Code Playgroud)
(显然它正在尝试在主机端创建目录,但它已经存在)
奇怪的是,当我尝试将整个主文件夹作为卷运行容器时,它可以工作但会产生不同的错误(文件夹中没有写权限):
[mbrandalero@machine ~]$ docker run -it --cap-add sys_admin -v "/homes/mbrandalero/:/usr/local/src/home" mbrandalero/my_image bash
root@46712ad936f2:/usr/local/src# cd home/
bash: cd: home/: Permission denied
root@46712ad936f2:/usr/local/src# ls -lah | grep "\(\.\|home\)"
total 4.0K
drwxr-xr-x 1 root root 18 May 20 14:50 . …
Run Code Online (Sandbox Code Playgroud) 如何在 Windows 10 上从 WSL2 挂载 NFS 共享?
sudo mount -t nfs 192.168.1.101:/mnt/tank /mnt/tank
Run Code Online (Sandbox Code Playgroud)
失败了
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
Run Code Online (Sandbox Code Playgroud)
我在 windows-subsystem-for-linux 上运行 Ubuntu 20.04 LTS。