Skip to content

Instantly share code, notes, and snippets.

@franciscocpg
Forked from koshigoe/mount-ram.sh
Last active May 12, 2018 20:11
Show Gist options
  • Save franciscocpg/e929676f28c321692237 to your computer and use it in GitHub Desktop.
Save franciscocpg/e929676f28c321692237 to your computer and use it in GitHub Desktop.
Like tmpfs in Mac OSX
#!/bin/bash
set -e
curl https://gist.githubusercontent.com/franciscocpg/e929676f28c321692237/raw/mount-ram.sh -o /usr/local/bin/mount-ram
chmod +x /usr/local/bin/mount-ram
curl https://gist.githubusercontent.com/franciscocpg/e929676f28c321692237/raw/umount-ram.sh -o /usr/local/bin/umount-ram
chmod +x /usr/local/bin/umount-ram
#!/bin/sh
# This program has two feature.
#
# 1. Create a disk image on RAM.
# 2. Mount that disk image.
#
# Usage:
# $0 <dir> <size>
#
# size:
# The `size' is a size of disk image (MB).
#
# dir:
# The `dir' is a directory, the dir is used to mount the disk image.
#
# See also:
# - hdid(8)
#
mount_point=${1}
size=${2:-64}
echo "Mounting at $mount_point with size ${size}M"
mkdir -p $mount_point
if [ $? -ne 0 ]; then
echo "The mount point didn't available." >&2
exit $?
fi
sector=$(expr $size \* 1024 \* 1024 / 512)
device_name=$(hdid -nomount "ram://${sector}" | awk '{print $1}')
if [ $? -ne 0 ]; then
echo "Could not create disk image." >&2
exit $?
fi
newfs_hfs $device_name > /dev/null
if [ $? -ne 0 ]; then
echo "Could not format disk image." >&2
exit $?
fi
mount -t hfs $device_name $mount_point
if [ $? -ne 0 ]; then
echo "Could not mount disk image." >&2
exit $?
fi
#!/bin/sh
# This program has two features.
#
# 1. Unmount a disk image.
# 2. Detach the disk image from RAM.
#
# Usage:
# $0 <dir>
#
# dir:
# The `dir' is a directory, the dir is mounting a disk image.
#
# See also:
# - hdid(8)
#
mount_point=$1
if [ ! -d "${mount_point}" ]; then
echo "The mount point didn't available." >&2
exit 1
fi
mount_point=$(cd $mount_point && pwd)
device_name=$(df "${mount_point}" 2>/dev/null | tail -1 | grep "${mount_point}" | cut -d' ' -f1)
if [ -z "${device_name}" ]; then
echo "The mount point didn't mount disk image." >&2
exit 1
fi
umount "${mount_point}"
if [ $? -ne 0 ]; then
echo "Could not unmount." >&2
exit $?
fi
hdiutil detach -quiet $device_name
@franciscocpg
Copy link
Author

Install

bash <(curl -s https://gist.githubusercontent.com/franciscocpg/e929676f28c321692237/raw/install.sh)

Usage Example

Mount with 512M
mount-ram /usr/local/var/ram 512
Is mounted?

df -h | grep ram
/dev/disk6      512Mi  1.5Mi   62Mi     3%      386     15996    2%   /usr/local/var/ram

Umount
umount-ram /usr/local/var/ram

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment