145 lines
4.2 KiB
Markdown
145 lines
4.2 KiB
Markdown
|
|
# 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!
|