在 Linux 和 OpenBSD 之间移动文件并保留文件属性

在 Linux 和 OpenBSD 之间移动文件并保留文件属性

我想在 Linux 和 OpenBSD 之间移动/共享一些文件。实现这一目标的简单方法是什么?

这些是我迄今为止找到的解决方案以及为什么我不完全相信:

  • 使用带有 FAT32 分区的普通 USB 驱动器:它不会保留权限。
  • 使用另一种分区类型:哪种分区类型可以在两者上进行 RW 操作?
  • 使用tar:我担心tarBSD 和 Linux 之间的实现不同。

在 Linux 和 OpenBSD 之间共享文件同时保留权限和时间戳的简单方法是什么?

答案1

我正在使用 NFS 挂载。我/home从 OpenBSD NFS 服务器安装在 Ubuntu 和 OpenBSD 上,没有任何问题(两个系统上的 UID/GID 相同!)。

如果您采用双引导并且只想时不时地传输一些文件,那么tarFAT32 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 传输不是一个选项)。

相关内容