Handy shell tools to use like native commands
Find a file
2026-07-04 11:32:06 +06:00
.gitignore Base 2026-07-04 08:20:25 +06:00
gacp Update reporting 2026-07-04 11:32:06 +06:00
rcmount Update reporting 2026-07-04 11:32:06 +06:00
README.md Update reporting 2026-07-04 11:32:06 +06:00
sbak Base 2026-07-04 08:20:25 +06:00

🛠️ ShellTools: Handy tools to use like native Linux command

A collection of high-performance, professional Linux utilities designed for efficiency, reliability, and a zero-dependency footprint. These tools are engineered to act as native system commands, providing a seamless experience for system administrators and developers.

📦 Installation | ✨ Included utilities | 📖 Usage example

📦 Installation

Run following command as root user;

(INSTALLATION_PATH="/Joy"; \
	mkdir -p "${INSTALLATION_PATH}"; \
	cd "${INSTALLATION_PATH}" && \
	git clone -q https://forgejo.piti.cloud/joy/ShellTools.git && \
	cd ShellTools && \
	rm -f .gitignore README.md && \
	chmod 755 * && \
	echo "export PATH=\$PATH:${INSTALLATION_PATH}/ShellTools" > /etc/profile.d/Joy-ShellTools.sh
); source /etc/profile.d/Joy-ShellTools.sh

📦 Update

Run following command as root user;

(INSTALLATION_PATH="/Joy/ShellTools"; \
	cd "${INSTALLATION_PATH}" && \
	git fetch --all && \
	git reset --hard origin/main && \
	rm -f .gitignore README.md && \
	chmod 755 *) && echo "✅ Update succeeded" || echo "❌ Update failed!"

✨ Included utilities

sbak: Stupid Backup

A universal, multi-channel backup and distribution pipeline.

  • Local: Dynamic compression with automated pruning (count/age).
  • Mirroring: Direct copying to network/mounted paths.
  • Remote: Secure offloading via FTP and SSH/SFTP.
  • Notification: Real-time alerts via Webhooks and SMTP.
  • Lifecycle: Pre- and post-backup shell command hooks.

gacp: Git push helper

A streamlined wrapper for the Git commit-and-push workflow.

  • Fast-Track: Adds all changes, commits with a custom or default message, and pushes to the remote repository in one command.

rcmount: Mount an rClone remote

Create a mount point for an rClone remote and mount it using rClone.

📖 Usage examples

sbak: Stupid Backup

Standard Local Backup:

sbak

Advanced remote pipeline:

sbak -s /var/www/html -t /mnt/backups -c 10 \
	--ftp-host ftp.example.com \
		--ftp-user admin \
		--ftp-password secret \
	--webhook-url https://hook.example.com/alert \
		--webhook-post \
	--command-before "docker compose down;#" \
	--command-after "docker compose up -d;#"

Note;

  • Use sbak --help for complete options
  • Backup file path and source path are automatically appended to the --command-before & --command-after commands
  • Use ;# at the end of --command-before & --command-after commands to suppress trailing arguments

gacp: Git push helper

Push with default message ("Update"):

gacp

Push with custom message:

gacp "Fixed critical bug in API"

rcmount: Mount an rClone remote

Create mount point at /Remote/remote_name path:

rcmount --remote-name=remote_name

Mount /Remote/Path remote path at /My/Mount/Location/remote_name local path:

rcmount --remote-name=remote_name --remote-path=/Remote/Path --local-base-path=/Central/Mount/Location