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

4.2 KiB

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):

brew install sshpass

Ubuntu/Debian:

sudo apt-get install sshpass openssh-client

CentOS/RHEL:

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):

    chmod +x sync-project.sh
    
  2. Run the script:

    ./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

$ ./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!