Crates.io | rsmount |
lib.rs | rsmount |
version | 0.1.0 |
source | src |
created_at | 2024-10-28 15:30:14.510296 |
updated_at | 2024-10-28 15:30:14.510296 |
description | Safe Rust wrapper around the `util-linux/libmount` C library |
homepage | https://github.com/nickpiaddo/rsmount |
repository | https://github.com/nickpiaddo/rsmount |
max_upload_size | |
id | 1425743 |
size | 3,665,485 |
⚠️ WARNING: This library is still in development, thus not yet suitable for use in production.
The rsmount
library is a safe Rust wrapper around util-linux/libmount
.
rsmount
allows users to, among other things:
/proc/<pid>/mountinfo
,This crate requires libmount
version 2.39.2
or later.
Add the following to your Cargo.toml
:
[dependencies]
rsmount = "0.1.0"
Then install the system packages below before running cargo build
:
util-linux
: to generate Rust bindings from libmount
's header files.libclang
: to satisfy the dependency of bindgen
on libclang
.pkg-config
: to detect system libraries.Read the installation instructions below to install the required dependencies on your system.
In this example we mount a disk on /mnt/backup
.
use rsmount::core::device::BlockDevice;
use rsmount::core::flags::MountFlag;
use rsmount::core::fs::FileSystem;
use rsmount::mount::Mount;
fn main() -> rsmount::Result<()> {
// Configure the `Mount` struct.
let block_device: BlockDevice = "/dev/vda".parse()?;
let mut mount = Mount::builder()
// Device to mount.
.source(block_device.into())
// Location of the mount point in the file tree.
.target("/mnt/backup")
// Do not allow writing to the file system while it is mounted.
.mount_flags(vec![MountFlag::ReadOnly])
// Gives a hint about the file system used by the device (optional).
.file_system(FileSystem::Ext4)
.build()?;
// Mount `/dev/vda` at `/mnt/backup`.
mount.mount_device()?;
Ok(())
}
As root
, issue the following command:
apk add util-linux-dev clang-libclang pkgconfig
Install the packages in a temporary environment with:
nix-shell -p util-linux.dev libclang.lib pkg-config
or permanently with:
nix-env -iA nixos.util-linux.dev nixos.libclang.lib nixos.pkg-config
sudo apt-get install libmount-dev libclang-dev pkg-config
This project is licensed under either of the following:
at your discretion.
Files in the third-party/ and web-snapshots/ directories are subject to their own licenses and/or copyrights.
SPDX-License-Identifier: Apache-2.0 OR MIT
Copyright (c) 2023 Nick Piaddo