您推荐USB闪存盘使用哪种文件系统?


18

这是使用Ubuntu时遇到的一个问题:我有两台安装了Ubuntu的计算机(comp1和comp2)。我在comp1上使用Ubuntu创建了一个文档,然后将文件复制到FAT格式的USB闪存驱动器上。通过闪存驱动器,我将文档粘贴到comp2上。问题是文件权限在传输过程中从未保留。我假设是因为FAT不支持权限。

有针对这个的解决方法吗?我是否应该继续将FAT文件系统用于USB闪存驱动器(因为FAT最适合用于闪存驱动器),并且只存在此权限问题?还是建议使用更加“ Ubuntu Friendly”文件系统重新格式化我的闪存驱动器,以保留权限?

Answers:


11

ext4是日志文件系统,这意味着如果设备过早拔出,它很有可能恢复损坏的文件系统。写操作的日志部分包含有关将要完成的信息,并且在操作完成后将其清除。如果在安装设备时发现设备上存在未完成的日志,则可以将文件系统还原到其先前状态,从而保持其完整性。

虽然在USB记忆棒上安装日志文件系统会占用一些空间,但实际上对于大多数事情来说,这是一个不错的选择。

显然,如果您需要一种可以随时插入任何计算机的设备,那么FAT将是您的理想之选。如果只需要偶尔将一台设备插入一台Windows计算机中的设备,则可以在Windows中安装ext2设备驱动程序,以使其能够读取所有ext(x)驱动器。当然,由于Windows不了解Linux的权限和所有权,因此也不会处理这些内容。


我不能说得更好。+1
路易斯·阿尔瓦拉多

Windows的Ext2驱动程序也应该能够读取Ext4文件系统-它只会忽略日志。
内森·奥斯曼

8

您可以尝试将驱动器格式化为UDF(通用磁盘格式)。它是在CD和DVD上使用的格式。大多数现代操作系统都可以对其进行读写。

现在,在UDF格式化的驱动器上查看我的数据时,似乎保留了Linux文件权限。到目前为止,它对我有用。

UDF格式化驱动器的另一个好处是,它可以存储单个大文件,最大容量为16 Exabyte(如果我写错了,请纠正我。),而Fat32只能存储4GB或更小的文件,最大存储分区为FAT32只有2TB。

它在Win7和8上运行良好。对于较旧的Windows操作系统(如XP和2000),您可以从驱动器中读取内容,但必须安装某种驱动程序才能对其进行写入。

对于Mac,OS X 10.5及更高版本具有完全兼容性。这是完整的兼容性图表。 UDF兼容性表

在Ubuntu上,请按照以下步骤将驱动器格式化为UDF。

sudo apt-get update
sudo apt-get install udftools

好的,现在您要删除目标驱动器中的当前分区。您可以使用GUI工具(例如Disk Utility)或执行以下操作。

sudo blkid

在输出中找到您的驱动器。(它们看起来类似于/ dev / sdb/ dev / sdc)现在执行以下操作,但是将/ dev / sdx中的' x ' 替换为指向您要清除其分区的驱动器。对两行代码都执行此操作。

sudo dd if=/dev/zero of=/dev/sdx bs=1M count=1
sudo mkudffs -b 512 --media-type=hd --utf8 --lvid=DriveLabel --vid=DriveLabel --fsid=DriveLabel  /dev/sdx

您可以根据自己的喜好更改显示“ DriveLabel”的位置。

应该是这样。

实际上,我的做法略有不同,但是认为此方法更易于遵循。我从这个站点引用了这种方法。

我希望这可以帮助某个人。


不适用于我:安装USB驱动器时出错
路易(Louis)

1
谢谢,非常有趣的方法,非常适合台式机操作系统(已针对Ubuntu 15.10 +,Windows 7+进行了测试),但不适用于移动操作系统(对于最高8.x的Android系统绝对不适用)。与日志文件系统相比,我预计对闪存驱动器的写入影响会小得多。这是CreateUdfFlash(){ sudo wipefs "$1" ; sudo mkudffs --utf8 -b 512 --media-type=hdd --lvid="$2" --vid="$2" --fsid="$2" "$1" ; } ; CreateUdfFlash "/dev/sdX" "Some Disk Label"
单线的

7

当使用在USB驱动器上保留用户ID的文件系统时,您可能会遇到以下问题:由于在创建用户帐户的顺序中分配了用户ID,而文件系统实际上存储的是文件所有者的数字ID,而不是用户名。所以,如果说,主机A alicebob账户,B机有brucezoe并且alice很有可能当爱丽丝副本她文件到EXT(2/3/4)格式的USB驱动器,走到机器B和试图访问那么它占她将发现这些文件全部归其所有,bruce并且是的只读文件alice

当然,如果两台计算机上只有一个用户,那么这将不是问题。

tar按照@FSMaxB的建议,传输压缩文件中的文件可以解决此问题,因为解压缩压缩文件时,文件将由您的用户标识创建。


0

如果仅在Linux系统上使用闪存驱动器,则可以使用其中一种ext文件系统,例如ext4,但是当与其他系统一起使用时,FAT是唯一兼容的文件系统。

使用FAT和保留权限(而非所有权)的一种方法是使用tar存档!


1
将tar存档解压缩为root保留文件所有权,因此存档本身确实存储用户ID。但是,实际上不建议在其他计算机上执行此操作,因为用户ID可能不同。
谢尔盖

谢谢。我想我现在将尝试TAR解决方案。问题:是否有创建TAR并将其创建在闪存驱动器上的方法?我导航到我要TAR的文件所在的目录,当我运行TAR命令时,在该目录中创建了归档文件。我可以改为在闪存驱动器上创建存档吗?
格雷格

创建TAR需要BASH对吗?还是有GUI方式可以做到这一点?
格雷格

如果您使用普通的ubuntu,则可以右键单击文件或目录,然后单击“压缩”(因为我使用的是德语系统,所以不知道是否这样称呼它)
FSMaxB 2012年

我没有尝试从gui中使用tar,而是使用tar.bz2从gui中进行压缩,并使用“ tar -xf”对bash进行了解压缩,从而保留了我的权限。
FSMaxB

0

我在USB-Sticks上使用reiserfs多年,没有任何问题。好吧-只是它们无法从Windows系统中读取,如果丢失了,这可能还不错。

如果您对摇杆进行分区,以将部件与Windows一起使用以进行数据交换,请确保Windowspartition是第一个部件-否则将不会被识别(至少对于XP来说我是有经验的)。

您可以构建一个胖文件系统(对于今天的存储棒大小,它们不是很有限吗?),然后向其中添加一个大而空的文件,然后将该文件作为循环设备安装在Ubuntu中。然后,您将能够保留文件权限,并在不进行分区或格式化的情况下增加或减少保留的空间。

如前所述:Tars,Zips等是另一种可能性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.