Erstellen Sie eine RAM-Disk-Bereitstellung für einen bestimmten Ordner in OSX


11

Ich verwende einen Befehl wie diesen, um eine RAM-Disk zu erstellen:

diskutil erasevolume HFS+ "ram disk" `hdiutil attach -nomount ram://307200`

Dies funktioniert erfolgreich, und auf meinem System wird eine / Volumes / ram-Festplatte bereitgestellt, die ich verwenden kann und die von / dev / disk5 oder einem anderen Ort bereitgestellt wird.

Ich möchte in der Lage sein zu steuern, wohin dies führt, in / tmp / my_dir oder wo auch immer zu mounten. Ich habe viele Kombinationen von Parameteränderungen in hdiutil und diskutil ohne Erfolg ausprobiert. Was ist der richtige Weg, um dies zu tun?


Verwenden Sie einen symbolischen Link, um ihn an der gewünschten Stelle anzuzeigen.
Martineau

Ich fand einen Weg, um dies zu erreichen, aber ich musste es in mehr als einem Schritt in einem Bash-Skript tun
Derek

Sie können hier Ihre eigene Antwort akzeptieren (und dabei die Details mit dem Rest von uns teilen ;-).
Martineau

Antworten:


15
#!/bin/sh
ramfs_size_mb=2100
mount_point=/tmp/rdisk

mkramdisk() {
  ramfs_size_sectors=$((${ramfs_size_mb}*1024*1024/512))
  ramdisk_dev=`hdid -nomount ram://${ramfs_size_sectors}`

  newfs_hfs -v 'ram disk' ${ramdisk_dev}
  mkdir -p ${mount_point}
  mount -o noatime -t hfs ${ramdisk_dev} ${mount_point}

  echo "remove with:"
  echo "umount ${mount_point}"
  echo "diskutil eject ${ramdisk_dev}"
}

Für macOS Sierra hat es nicht funktioniert
Sasho

Das Code-Snippet funktioniert in Sierra.
Rafa

1
Eine Sache, die Sie beachten sollten, ist, dass hdiutilRight-Pads mit Leerzeichen eine Ausgabe von bis zu einer Länge von 54 haben. Wenn Sie also zitieren ${ramdisk_dev}, werden Sie auf Probleme stoßen.
Zneak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.