add readme
This commit is contained in:
145
README.md
Normal file
145
README.md
Normal file
@@ -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!
|
||||
Reference in New Issue
Block a user