我想在 Linux 和 OpenBSD 之间移动/共享一些文件。实现这一目标的简单方法是什么?
这些是我迄今为止找到的解决方案以及为什么我不完全相信:
- 使用带有 FAT32 分区的普通 USB 驱动器:它不会保留权限。
- 使用另一种分区类型:哪种分区类型可以在两者上进行 RW 操作?
- 使用
tar
:我担心tar
BSD 和 Linux 之间的实现不同。
在 Linux 和 OpenBSD 之间共享文件同时保留权限和时间戳的简单方法是什么?
答案1
我正在使用 NFS 挂载。我/home
从 OpenBSD NFS 服务器安装在 Ubuntu 和 OpenBSD 上,没有任何问题(两个系统上的 UID/GID 相同!)。
如果您采用双引导并且只想时不时地传输一些文件,那么tar
FAT32 USB 记忆棒上的存档就可以了。
我从未尝试过在 Linux 和 OpenBSD 之间共享分区(我会使用虚拟机而不是双引导)。这听起来很棘手,但 OpenBSD 6.1mount_ext2fs
在基本系统中有一个命令,因此至少应该在基本程度上支持 EXT2 文件系统。
答案2
使用快速测试tar
。我相信你可能不知道的关键是标志-p
或选项。这是(基本上)尝试保留文件权限(以及更多)。
在 FreeBSD 系统上(但也可以是 OpenBSD 甚至 OSX):
mkdir t1-dir
touch t1-dir/t1-test
touch t1-dir/t1-read-only
chmod 600 t1-dir/t1-read-only
tar czf t1.tgz t1-dir
ls -l t1-dir
total 0
-rw------- 1 tigger tigger 0 5 Sep 16:24 t1-read-only
-rw-r--r-- 1 tigger tigger 0 5 Sep 16:24 t1-test
在 Linux 系统上(几分钟后):
sftp <freebsd system>
get t1.tgz
exit
tar xzpf t1.tgz
ls -l t1-dir
total 0
-rw------- 1 tigger tigger 0 Sep 5 16:24 t1-read-only
-rw-r--r-- 1 tigger tigger 0 Sep 5 16:24 t1-test
如果这两个系统位于同一 LAN 上,您可以在其中一个上设置 NFS 或 Samba 共享。就我个人而言,我有一个专用的文件和媒体服务器 (FreeBSD),具有用于 FreeBSD 和 Linux 之间共享文件的 NFS 设置,以及用于 Windows 10 和 OSX 的 Samba 设置。
答案3
OpenBSD 支持 ext2 和 ext3,具有读/写和保留权限。 OpenBSD 不支持 ext4。
要将 Linux 文件系统(sd0a
例如)安装到 openbsd 机器上,请以 root 身份执行以下操作:
mkdir /mnt/linux
mount_ext2fs /dev/sd0a /mnt/linux
也可用于mount_ext2fs
挂载 ext3 文件系统。
cp
然后您可以使用或像这样在目录之间复制文件,tar
例如:
(cd /mnt/linux && tar cf - .) | (cd /home/pkdick/linux && tar xpf -)
如果要与 openbsd 永久共享 linux 目录,请使用 NFS(OpenBSD 仅支持 NFS 版本 1 至 3)。
在 Linux 端,声明导出并启动 nfs 守护进程。在 OpenBSD 端,执行以下操作(在以下行中,替换linuxhostname
为您的 linux 主机名或 IP):
mkdir /mnt/linux
# to check that NFS services are available on your linux box:
rpcinfo -p linuxhostname
# to see the NFS exports available on your linux box:
showmount -e linuxhostname
# Then, for example, if you have an export /home/pkdick on your linux box:
mount linuxhostname:/home/pkdick /mnt/linux
您可以在 /etc/fstab 中声明此安装:
linuxhostname:/home/pkdick /mnt/linux nfs rw,nodev 0 0
答案4
Ext2 是 Linux 和 BSD 之间唯一能够本机保留权限的通用文件系统格式。如果用户或组 ID 不同,您可能需要使用 chown 或 chgrp。 EXT2 时间戳具有非常粗的分辨率,EXT4 具有纳秒分辨率。已知 EXT 变体(包括 EXT4)会产生垃圾数据 (YMMV),因此买者自负。
BSD mtree(8) 在某些 Linux 发行版(例如 OpenSUSE)上可用,可用于保存和恢复权限、时间戳、标志、所有者/组等(即使用 mtree 文件保存元数据甚至可以与文件系统一起使用)无法直接存储该数据,包括 FAT 变体)。就此而言,bsdtar 也可在某些 Linux 发行版上使用,因此您可以在双方上使用兼容版本。
如果您有两个正在运行的系统(而不是单个多重引导系统),通过网络连接的 rsync 也可以保留此类元数据。如果您还没有使用过 rsync,那么学习曲线会很陡峭,但是一旦您掌握了它的窍门,它就会非常灵活。
我使用 EXT 变体在多重引导系统上保存共享数据,并通过网络使用 rsync 在计算机之间共享和同步数据。甚至还有用于 MS 系统读写 EXT2 的驱动程序。我所知道的系统中最奇怪的(我对 macOS 知之甚少,我想保持这种方式)是 illumos 和基于它的发行版,它与所有其他系统没有共同点(它使用 ZFS)本身可能支持 UFS,也许是 NTFS,但不支持 EXT;MS 机器没有 UFS,并且某些 Windows 变体的 ZFS 可用性有限[除非您拥有企业级磁盘容量和支持人员来掌握 beadm 等。 .,您可能不想要 ZFS];illumos 也缺乏 USB 3 支持,因此除非您将自己限制为 USB 2 或更低的端口和设备,否则 USB 传输不是一个选项)。