diff --git a/README.md b/README.md new file mode 100644 index 0000000..6a1034e --- /dev/null +++ b/README.md @@ -0,0 +1,145 @@ +# MTC Sync Script + +A bash automation tool for synchronizing project files from a remote server to your local machine with automatic VS Code SFTP configuration. + +## Overview + +**MTC Sync Script** streamlines the process of downloading and setting up projects from remote servers. It automates: +- Creating compressed archives on the remote server +- Downloading files via SCP +- Extracting and organizing files locally +- Configuring VS Code for SFTP development + +Perfect for developers working with remote projects who want a fast, one-command setup experience. + +## Features + +- ✅ **Interactive Setup** - Simple prompts for server and local paths +- ✅ **Automated Sync** - Compress, download, and extract in one command +- ✅ **VS Code Integration** - Auto-generates SFTP configuration +- ✅ **Error Checking** - Validates each step with helpful error messages +- ✅ **Cleanup** - Removes temporary files automatically +- ✅ **Colored Output** - Clear status messages with color coding + +## Requirements + +### System Dependencies +- **Bash** shell +- **SSH/SCP** - Secure shell commands (usually pre-installed on macOS/Linux) +- **sshpass** - Password-based SSH authentication tool +- **tar** - Archive/compression utility (pre-installed) + +### Installation of Dependencies + +**macOS** (using Homebrew): +```bash +brew install sshpass +``` + +**Ubuntu/Debian**: +```bash +sudo apt-get install sshpass openssh-client +``` + +**CentOS/RHEL**: +```bash +sudo yum install sshpass openssh-clients +``` + +### Server Requirements +- SSH access to the remote server +- Project files in a known folder path (e.g., `~/public_leo`) + +## Usage + +### Basic Usage + +1. **Make the script executable** (if needed): + ```bash + chmod +x sync-project.sh + ``` + +2. **Run the script**: + ```bash + ./sync-project.sh + ``` + +3. **Answer the prompts**: + - **Server address**: Enter your server credentials (e.g., `user@server.com` or `leo@192.168.1.100`) + - **Server project path**: Path where your project is stored on the server (e.g., `~/public_leo`) + - **Local folder**: Where you want to download the project (e.g., `./my_project`) + - **SSH password**: Your password when prompted + +### Example Session + +```bash +$ ./sync-project.sh + +Enter server address (user@host): leo@myserver.com +Enter server project path: ~/public_leo +Enter local folder path: ./my_project +[System will prompt for SSH password] + +✓ Archive created successfully +✓ File transfer complete +✓ Extraction complete +✓ VS Code SFTP config created +``` + +## What the Script Does + +1. **Connects to Remote Server** - Uses SSH to authenticate with password or key +2. **Creates Archive** - Compresses project files into `tar.gz` format on server +3. **Downloads Archive** - Uses SCP to securely copy archive to local machine +4. **Extracts Files** - Unpacks the archive to your specified local folder +5. **Cleans Up** - Removes temporary archive files +6. **Configures VS Code** - Creates `.vscode/sftp.json` for seamless SFTP workflow + +## VS Code SFTP Configuration + +The script automatically generates a `.vscode/sftp.json` file with: +- **Auto-upload on save** - Changes sync to server immediately +- **Pre-configured ignore patterns** - Excludes common folders: + - `node_modules/` + - `vendor/` + - `storage/` + - `.vscode/` + - `.git/` + - And others... + +This allows you to continue developing locally and have changes automatically uploaded to the remote server. + +## Error Handling + +The script includes error checking at each step: +- ✓ Validates SSH connection +- ✓ Checks if remote path exists +- ✓ Verifies archive creation +- ✓ Confirms successful download and extraction +- ✓ Exits gracefully with error messages if anything fails + +## Troubleshooting + +### "sshpass: command not found" +Install sshpass using the commands above for your OS. + +### "SSH connection refused" +- Verify server address is correct +- Check that SSH is enabled on the server +- Confirm your username and password + +### "Remote path not found" +- Verify the server project path is correct +- Ensure the path exists on the server +- Check user permissions + +### "Local folder already exists" +The script will still sync, but existing files will be overwritten. Back up important files first. + +## License + +This script is provided as-is for development and synchronization purposes. + +## Contributing + +Feel free to improve this script or report issues! \ No newline at end of file