Files
mtc-project-sync-script/README.md
Leons Aleksandrovs 596491f6e9 add readme
2025-10-22 10:50:38 +03:00

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!