如何在没有访问OS X的情况下,在Ubuntu中读写HFS+日志化外部硬盘驱动器?

我有一個已日誌記錄的HFS+外接硬碟,需要在Ubuntu上能夠寫入。我無法使用我的Mac,它與我相隔數千英里,而且在接下來的三個月內我也無法接觸到它。
在不丟失硬碟中的數據的情況下,是否有辦法解決這個問題?

ubuntu-MATE caja 用户:无论您选择以下哪个解决方案,执行 killall caja && caja . 将帮助 caja“获得消息”,即文件夹现在实际上是可写的。 - Frank N
5个回答

如何在Ubuntu中将HFS分区挂载为读写模式?- 超级用户

引用第二/三个答案:

首先,确保已安装hfsprogs。示例安装命令:

sudo apt-get install hfsprogs

接下来,挂载或重新挂载HFS+驱动器;命令需要如下所示:

sudo mount -t hfsplus -o force,rw /dev/sdXY /media/mntpoint

或者

sudo mount -t hfsplus -o remount,force,rw /mount/point

...

最后,如果驱动器未正确卸载或因其他原因部分损坏,请运行fsck.hfsplus ...来修复它: sudo fsck.hfsplus -f /dev/sdXY
那里还有关于挂载HFS+文件系统的宝贵信息。

谢谢,我会试一试。我找到的信息指出Ubuntu无法处理日志化的HTFS+驱动器,并且说它必须在OSX中进行“取消日志记录”。接下来的三个月我没有使用OSX的机会,因此无法取消日志记录。 - oppochips
1我尝试并获得sudo mount -t hfsplus -o force,rw /dev/sdb2 /media/sdb2 mount: /dev/sdb2已经挂载或/media/sdb2忙碌 mount: 根据mtab,/dev/sdb2已挂载在/media/1ad12b58-c2f2-39d3-955f-54ea66a96b2b上。该驱动器(一个HFS+日志卷)以只读方式挂载。是否可能在不撤销Mac OS上的日志记录的情况下写入它? 我尝试了最后一条命令并获得**检查HFS Plus卷。 fsck_hfs: 卷已被日志记录。未执行任何检查。 fsck_hfs: 使用-f选项强制执行检查。 - oppochips
从上面发布的链接中:如果您想从Ubuntu写入它,您需要关闭日志记录。Ubuntu仅支持写入非日志化的HFS+卷。在您的Mac上:打开“应用程序”->“实用工具”下的磁盘工具。 选择要禁用日志记录的卷。 在“文件”菜单中选择“禁用日志记录”。(在较新的Mac OS版本中,您需要在单击“文件”菜单时按住选项按钮。或者,如果您喜欢使用Command键+J)我没有访问Mac的权限,是否有可能在不丢失数据的情况下获得对驱动器的读写访问权?谢谢。 - oppochips
你应该尝试使用以下命令:sudo mount -t hfsplus -o remount,force,rw /dev/sdXY /media/mntpoint(或者省略 /dev/sdXY 并指向当前挂载的位置)。我会将这个编辑到我的答案中。 - Richard
1谢谢。我需要用什么替换"mountpoint"?我尝试了sdb2并输入sudo mount -t hfsplus -o remount,force,rw /dev/sdb2 /media/dev/sdb2 挂载:挂载点/media/dev/sdb2不存在,然后我尝试了sudo mount -t hfsplus -o remount,force,rw /dev/sdb2,结果是: - oppochips
根据mountmanager,它被挂载在/dev/sdb2上。 - oppochips
еҘҪзҡ„пјҢдҪ еҸҜиғҪеҸӘйңҖиҰҒз”Ёsudo mkdir /media/dev && sudo mkdir /media/dev/sdb2е‘Ҫд»ӨеҲӣе»әзӣ®еҪ•гҖӮеҰӮжһңдҪ дёҚжү“з®—д»Ҙrootиә«д»ҪеҶҷе…ҘиҜҘзӣ®еҪ•пјҢеҸҜд»ҘйҖүжӢ©и®ҫзҪ®жқғйҷҗпјҢдҪҝз”Ёsudo chown -R $USER /media/devе‘Ҫд»ӨгҖӮ - Richard
我使用上述命令创建了目录。sudo mount -t hfsplus -o remount,force,rw /dev/sdb2 /media/mntpoint给出的结果是:mount: 挂载点/media/mntpoint不存在。 我还尝试了sudo mount -t hfsplus -o remount,force,rw /dev/sdb2,并得到了一个包含“命令为`mount [-t fstype] something somewhere'”的长输出。 /etc/fstab中的详细信息可能被省略。 - oppochips
我也尝试了sudo mount -t hfsplus /dev/sdb2 /media/1ad12b58-c2f2-39d3-955f-54ea66a96b2b 挂载:/dev/sdb2已经挂载或/media/1ad12b58-c2f2-39d3-955f-54ea66a96b2b忙碌 挂载:根据mtab,/dev/sdb2已经挂载在/media/1ad12b58-c2f2-39d3-955f-54ea66a96b2b上 - oppochips
并使用sudo mount -o remount,rw,force /media/1ad12b58-c2f2-39d3-955f-54ea66a96b2b /dev/sdb2命令 mount:您必须指定文件系统类型。 - oppochips
好的,请尝试执行以下命令:sudo mount -t hfsplus -o remount,force,rw /dev/sdb2 /media/dev/sdb2(即刻执行该命令)。 - Richard
谢谢。我得到了 $ mount: /media/dev/sdb2 没有挂载或选项错误。 - oppochips
嗯...也许是 sudo mount -t hfsplus -o remount,rw -force /dev/sdb2 /media/dev/sdb2?确保你已经安装了 hfsprogs!在执行 fsck 的指示之前,可能无法向磁盘写入。 - Richard
sudo mount -t hfsplus -o remount,rw -force /dev/sdb2 /media/dev/sdb2 这个命令没有任何作用。是的,已经安装了hfs progs,并且通过 sudo fsck.hfsplus /dev/sdb2 命令进行了检查。 ** /dev/sdb2 ** 正在检查 HFS Plus 卷。 fsck_hfs: 该卷已启用日志记录。未执行任何检查。 fsck_hfs: 使用 -f 选项强制执行检查。 - oppochips
"什么都没发生"?如果命令正常工作,那么不应该有任何输出;请查看/media/dev/sdb2目录中是否有任何文件。我在我的回答中修改了fsck命令,加入了-f选项。 - Richard
是的,没有输出。使用新的fsck命令,我得到了以下结果:** /dev/sdb2 ** 正在检查HFS Plus卷。 ** 正在检查Extents Overflow文件。 ** 正在检查Catalog文件。 ** 正在检查Catalog层次结构。 ** 正在检查Extended Attributes文件。 ** 正在检查卷位图。 ** 正在检查卷信息。 ** 卷Storeva-USB似乎正常。--- 我尝试过弹出设备、重新执行命令和重启,但它仍然是只读的。 - oppochips
好的,所以它已经挂载了(ls -l /media/dev/sdb2 的输出是该设备上的文件和文件夹),但只能以只读方式访问? - Richard
是的,从一开始就已经挂载了,如果我的初始问题不清楚,对不起。我可以访问我的文件,并且在我们开始之前也可以访问,但仍然无法写入驱动器,这正是我需要能够做到的。dpole emploive是日志化的,我无法在OSX中取消日志记录,因为我没有接触Mac,并且几个月内也无法接触到。 - oppochips
抱歉回复晚了 - 我忘记了这个话题。请查看http://ubuntuforums.org/showthread.php?t=1420673,那里有一个可以在Ubuntu内部关闭日志记录的程序。 - Richard
尝试使用命令行替代磁盘工具的禁用日志功能:diskutil disablejournal /dev/disk2s2。别忘了将disk2s2替换为你实际的设备。 - T. Greg O'Neil
在Ubuntu 16.04上,我遇到了“未知的文件系统类型'hfsplus'”。 - bparker
在最近的Ubuntu版本中,您需要安装hfsplus而不是hfsprogs。请将此信息添加到您的回答中。谢谢。 - JPT
一个额外的信息:我不得不以root身份启动我的文件管理器(Nautilus),才能在hfs挂载点上进行写入操作。 - matt

这些步骤对我来说很有效(Ubuntu Studio 14.04):
sudo apt-get install hfsprogs

检查驱动器状态:
sudo fsck.hfsplus -f /dev/sdXY

卸载设备:
sudo umount /media/sebastian/devicename

(创建文件夹以挂载驱动器)
(使用HFS+读写权限挂载驱动器)
sudo mount -t hfsplus -o force,rw /dev/sdXY /home/sebastian/foldername

6这确实将其作为一个文件夹挂载了,但它仍然是只读的.... :( ... 似乎找不到简单的方法来绕过HFS+日志系统的限制。 - Amphibio
2这有效。但我们为什么需要“强制”? - qweruiop
9我遇到了以下错误:`mount: /dev/sda2上的文件系统类型错误,选项错误,超级块错误, 缺少代码页或辅助程序,或其他错误 在某些情况下,有用的信息可以在syslog中找到 - 尝试 dmesg | tail或类似命令。` - Jamie Hutber
这是正确的命令顺序。从fsck命令开始!谢谢! - skywinder
sudo fsck.hfsplus -f /dev/sdXY 还对驱动器进行了一些小修复,使我能够挂载它!我终于可以访问那100GB的照片了,我原以为它们已经丢失了。 - nbeuchat
我在想是否需要创建foldername文件夹。是的,你需要创建挂载点。所以mkdir /home/sebastian/foldername将是倒数第二个命令。 - gMale

我也遇到了这个问题。我尝试了fsck.hfsplusumount,使用sudo mount -t hfsplus -o remount,force,rw重新挂载,但都没有成功。
对我有效的方法是:
  1. 使用sudo umount /media/myMountPoint卸载
  2. 使用sudo rmdir删除挂载点
  3. 使用sudo mkdir重新创建挂载点
  4. 使用sudo mount -t hfsplus -o force,rw /dev/xxxx /media/myMountPoint重新挂载
希望这对你们也有用。

3你救了我的命! - Alex Chan
这个方法出乎意料地奏效了。我不知道为什么。目录是空的,在删除之前挂载它,即使使用了force,rw参数,也只能以ro方式挂载。删除并重新创建该目录解决了问题。 - Umar Ahmad
1'2.' 的原因可能是挂载点目录为 'user:user'。可以通过 ls -l 命令进行验证。换句话说,执行 sudo chown -c root:root myMountPoint/ 也可能修复该问题(在卸载之前仍然是必要的)。 - Frank N
根据我的经验:如果你不把你的挂载点放在/media/<用户名>/下,而是放在其他地方(我喜欢/mnt),例如一个“智能”的Ubuntu MATE会一次又一次地错误地删除和重新创建你的挂载文件夹。- 这样更容易实现一个持久的挂载脚本... - Frank N

由于我不能发表评论(声望不够:),我将发布这个答案来指出上面的回答似乎是针对一个没有日志记录的HFS+硬盘。执行“fsck.hfsplus”命令时,需要使用“-f”选项来处理日志记录的卷。为了避免混淆,我复制了以下命令:
$ sudo fsck.hfsplus /dev/sdXY

** /dev/sdXY
[snip....]
** The volume ########### appears to be OK.

这只能在没有日志记录的卷上运行。即使在已经启用了日志记录的卷上使用“-f”选项,这个检查本身也不会允许重新挂载的卷以读写方式挂载。我相信必须关闭日志记录。
在Linux上似乎没有可靠的代码可以关闭日志记录。请参考Richard提供的链接:http://ubuntuforums.org/showthread.php?t=1420673 如果关闭了日志记录,并且磁盘最初以只读方式挂载,卸载和重新挂载应该允许读写,前提是磁盘没有损坏。如果磁盘损坏,则需要运行fsck.hfsplus。

借鉴前面的回答,以下步骤对我很有效。希望对其他人也有用:
  1. 插入外部硬盘。

  2. 注意到Ubuntu会自动挂载它,但是只能以只读方式访问。

  3. 卸载驱动器(我只需在文件浏览器中点击弹出按钮即可完成)。

  4. sudo apt-get install hfsprogs

  5. $ sudo fsck.hfsplus /dev/sdXY 
    
    ** /dev/sdXY
    ** 正在检查HFS Plus卷。
    ** 检测到区分大小写的目录。
    ** 正在检查扩展溢出文件。
    ** 正在检查目录文件。
    ** 正在检查多链接文件。
    ** 正在检查目录层次结构。
    ** 正在检查扩展属性文件。
    ** 正在检查卷位图。
    ** 正在检查卷信息。
    ** 卷###########似乎正常。
    

    (如果文件系统是日志型,则使用sudo fsck.hfsplus -f /dev/sdXY

  6. 重新挂载驱动器(我只需在文件浏览器中点击驱动器即可完成)。

  7. 现在可以以读写方式访问该驱动器。


1以上是真实的,前提是磁盘未启用日志记录功能。 - akostadinov
2我按照你的步骤操作了一遍,一切都如预期地进行到了第6步。但在第7步上,驱动器仍然是只读的状态。 - Guilherme Salomé
错误答案 - abkrim