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?

Derek
quelle
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}"
}
Derek
quelle
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