SSH File System with offline access to cached files.
Project description
sshfs-offline
SSH File System with offline access to cached files.
Features:
-
Based on FUSE (Filesystem in Userspace framework for Linux)
-
Metadata and Data are cached locally to improve performance.
-
Offline access to cached data when the remote host is not reachable
-
Read/Write file system
Install Script:
$ pip install sshfs-offline
How to mount a filesystem
Usage:
```sh
usage: sshfs-offline [-h] [-p PORT] [-u USER] [-d REMOTEDIR] [--debug] [--cachetimeout CACHETIMEOUT] host mountpoint
To unmount use: fusermount -u mountpoint
positional arguments:
host remote host name
mountpoint local mount point (eg, ~/mnt)
options:
-h, --help show this help message and exit
-p PORT, --port PORT port number (default=22)
-u USER, --user USER user on remote host
-d REMOTEDIR, --remotedir REMOTEDIR
directory on remote host (eg, ~/)
--debug run in debug mode
--cachetimeout CACHETIMEOUT
duration in seconds to keep metadata cached (default is 5 minutes)
```
Example:
```sh
sshfs-offline localhost ~/mnt
```
Note, that it's recommended to run it as user, not as root. For this to work the mountpoint must be owned by the user. If the username is different on the host you are connecting to, then use the --user option.
If you need to enter a password sshfs-offline will ask for it. You can also specify a remote directory using --remotedir. The default is your home directory.
The cache timeout defaults to 5 minutes, and can be set with the -cachetimeout option.
To unmount the filesystem:
fusermount -u mountpoint
Cache Implementation
The data and metadata are cached in the .sshfs-offline directory. In this example, the test/myfile.txt file has two 132K blocks. The data is cached in the data sub-directory, and the metadata is cached in the metadata sub-directory.
➜ .sshfs-offline
├── data
│ └── localhost # host name
│ └── home
│ └── dave
│ └── test
│ └── myfile.txt
└── metadata
└── localhost # host name
└── home
└── user
├── %test # test direcotry
│ ├── getattr # lstat status for directory
│ └── readdir # directory entries
└── %test%myfile.txt # test/myfile.txt file
├── blockmap # track blocks that are cached
└── getattr # lstat status for file
Debugging
- Metrics are logged to the ~/.sshfs-offline/metrics.log file.
- In production (--debug=False), the log level is set to warning, and logs are writtend to the ~/.sshfs-offline/error.log file.
- If the --debug option is specified, the log level is set to debug, the process is run in the foreground, and logs are written to stdout.
Using the tail command to follow the metrics:
$ tail -f ~/.sshfs-offline
2025-09-23 07:26:19,237:INFO:metrics
getattr : 181
getattr_hit : 181
init : 1
readdir : 26
readdir_hit : 26
readlink : 104
readlink_hit : 104
sftp_chdir : 1
sftp_connected : 1
sftp_healthThread: 1
sftp_start : 1
Development
Create Virtual Environment:
$ cd sshfs-offline
$ python3 -m venv my-venv-name
$ source ~/my-venv-name/bin/activate
$ pip install -r requirements.txt
$ pip install -e .
Mount filesystem:
$ ./src/sshfs_offline/cli.py localhost ~/mnt
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sshfs_offline-0.0.7.tar.gz.
File metadata
- Download URL: sshfs_offline-0.0.7.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69e93ac791c03b4a18108fc3b16d13c9654db393b5431c3a5a4940f6d5df8c04
|
|
| MD5 |
5bb1bcdf0596a5f9e23c18449cef4a0c
|
|
| BLAKE2b-256 |
64e57be71ed804bee433eb4a34224360b86de7e4cc677f70dacebdb97f82bb54
|
File details
Details for the file sshfs_offline-0.0.7-py3-none-any.whl.
File metadata
- Download URL: sshfs_offline-0.0.7-py3-none-any.whl
- Upload date:
- Size: 14.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1968bf72e78388a322b4f48c33b93780d3a1a82dc944c6f263c5ae8a6db0d1f1
|
|
| MD5 |
cf3827207817f9ea91f3c55a78c68b87
|
|
| BLAKE2b-256 |
dca7c290be6099d198e397c1ba3bf47b433b8787ebd29fec89208de09582cfd1
|