copyacross


Namecopyacross JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/compilersutra/copyacross
SummaryCross-platform file copy & verification tool
upload_time2025-08-27 16:48:00
maintainerNone
docs_urlNone
authorTiwari Abhinav Ashok Kumar
requires_python>=3.8
licenseMIT
keywords scp file-transfer sync ssh verification devops
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # CopyAcross

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

**CopyAcross** is a cross-platform, bi-directional file synchronization tool built in Python. It supports local-to-local, local-to-remote, remote-to-local, and remote-to-remote file and folder sync.  

---

## Features

- One-way or bi-directional sync between sources and destinations.
- Supports local folders and remote hosts over SSH/SFTP.
- SHA-256 verification to ensure files are copied correctly.
- Parallel transfers for faster synchronization.
- Easy YAML-based configuration.
- Logs progress and errors with optional log files.
- Dry-run mode (planned for future release) to simulate sync without copying files.

---

## Limitations (Current Version)

- **Dry-run not yet implemented:** Currently, all sync operations will copy files; dry-run will be supported in a future release.  
- **Remote verification skipped:** Verification is only done for local sources.  
- **No conflict resolution:** For bi-directional sync, conflicts (e.g., modified files on both ends) are not automatically resolved.  
- **Large folders:** Performance for extremely large directories (>100k files) may require tuning `parallel` and system resources.  
- **Platform-dependent path issues:** Some path inconsistencies may appear when syncing between Windows and Linux/Unix.

---

## Future Improvements

- Full **dry-run** support for previewing sync actions.
- Conflict resolution strategies (latest file wins, merge strategies).  
- Incremental sync (only changed files) for large datasets.  
- Windows UNC and SMB share support.  
- Progress bars for file and folder transfers.  
- Advanced logging and optional email notifications on sync completion/failure.

---

## Project Aim

The goal of **CopyAcross** is to provide a **simple, reliable, and cross-platform file synchronization tool** that:

- Can handle both local and remote directories.
- Supports multi-threaded transfer for faster operations.
- Provides verification to ensure file integrity.
- Serves both **newbies** (easy config and usage) and **experienced users** (customizable, scriptable, and extendable).

---

## Installation

```bash
# Using pip (PyPI release coming soon)
pip install copyacross
````

Or install from source:

```bash
git clone https://github.com/compilersutra/copyacross.git
cd copyacross
pip install .
```

---

> For more example see example folder


## Quick Start

### 1. Create a config file (`config.yaml`):

```yaml
sync_direction: one-way
log_config: true
parallel: 4
ssh_key: null

sources:
  - path: "/home/user/source_folder/"
    type: folder
    host: null

destinations:
  - path: "/home/user/destination_folder/"
    type: folder
    host: user@192.168.0.100
```

### 2. Run from Python

```python
import copyacross

# Run sync with config file
copyacross.sync("config.yaml")
```

### 3. Run from Command Line

```bash
python -m copyacross.cli --config config.yaml
```

---

## Logging

* By default, logs are printed to stdout.
* Optional `log_file` parameter can write logs to a file.
* Example:

```python
copyacross.sync("config.yaml", log_file="sync.log")
```

---

## Example Usage

```python
import copyacross

# One-way sync
copyacross.sync("config.yaml")

# Future dry-run (simulation without copying files)
# copyacross.sync("config.yaml", dry_run=True)
```

---

## Developer Guide

### Structure

```
copyacross/
├── copyacross/          # Main package
│   ├── cli.py           # CLI entry point
│   ├── config.py        # YAML config loader
│   ├── logger.py        # Logging setup
│   ├── sync_engine.py   # Core sync logic
│   ├── transport.py     # Handles file transfers
│   ├── verifier.py      # File verification
│   ├── exceptions.py    # Custom exceptions
├── example/             # Example scripts
├── tests/               # Unit tests needed to be done
├── config.yaml          # Sample configuration
├── LICENSE
├── README.md
├── setup.cfg
├── pyproject.toml
```

---

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

---

## Contact

Created by [osc@compilersutra.com](mailto:osc@compilersutra.com).
For questions or feature requests, please open an issue on GitHub.

```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/compilersutra/copyacross",
    "name": "copyacross",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "scp, file-transfer, sync, ssh, verification, devops",
    "author": "Tiwari Abhinav Ashok Kumar",
    "author_email": "Compilersutra <osc@compilersutra.com>",
    "download_url": "https://files.pythonhosted.org/packages/89/a9/6fd2b041c7392567e7efc35542fe8436b2c75945fb32bbbf889aeb0d66e5/copyacross-0.1.0.tar.gz",
    "platform": null,
    "description": "# CopyAcross\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**CopyAcross** is a cross-platform, bi-directional file synchronization tool built in Python. It supports local-to-local, local-to-remote, remote-to-local, and remote-to-remote file and folder sync.  \n\n---\n\n## Features\n\n- One-way or bi-directional sync between sources and destinations.\n- Supports local folders and remote hosts over SSH/SFTP.\n- SHA-256 verification to ensure files are copied correctly.\n- Parallel transfers for faster synchronization.\n- Easy YAML-based configuration.\n- Logs progress and errors with optional log files.\n- Dry-run mode (planned for future release) to simulate sync without copying files.\n\n---\n\n## Limitations (Current Version)\n\n- **Dry-run not yet implemented:** Currently, all sync operations will copy files; dry-run will be supported in a future release.  \n- **Remote verification skipped:** Verification is only done for local sources.  \n- **No conflict resolution:** For bi-directional sync, conflicts (e.g., modified files on both ends) are not automatically resolved.  \n- **Large folders:** Performance for extremely large directories (>100k files) may require tuning `parallel` and system resources.  \n- **Platform-dependent path issues:** Some path inconsistencies may appear when syncing between Windows and Linux/Unix.\n\n---\n\n## Future Improvements\n\n- Full **dry-run** support for previewing sync actions.\n- Conflict resolution strategies (latest file wins, merge strategies).  \n- Incremental sync (only changed files) for large datasets.  \n- Windows UNC and SMB share support.  \n- Progress bars for file and folder transfers.  \n- Advanced logging and optional email notifications on sync completion/failure.\n\n---\n\n## Project Aim\n\nThe goal of **CopyAcross** is to provide a **simple, reliable, and cross-platform file synchronization tool** that:\n\n- Can handle both local and remote directories.\n- Supports multi-threaded transfer for faster operations.\n- Provides verification to ensure file integrity.\n- Serves both **newbies** (easy config and usage) and **experienced users** (customizable, scriptable, and extendable).\n\n---\n\n## Installation\n\n```bash\n# Using pip (PyPI release coming soon)\npip install copyacross\n````\n\nOr install from source:\n\n```bash\ngit clone https://github.com/compilersutra/copyacross.git\ncd copyacross\npip install .\n```\n\n---\n\n> For more example see example folder\n\n\n## Quick Start\n\n### 1. Create a config file (`config.yaml`):\n\n```yaml\nsync_direction: one-way\nlog_config: true\nparallel: 4\nssh_key: null\n\nsources:\n  - path: \"/home/user/source_folder/\"\n    type: folder\n    host: null\n\ndestinations:\n  - path: \"/home/user/destination_folder/\"\n    type: folder\n    host: user@192.168.0.100\n```\n\n### 2. Run from Python\n\n```python\nimport copyacross\n\n# Run sync with config file\ncopyacross.sync(\"config.yaml\")\n```\n\n### 3. Run from Command Line\n\n```bash\npython -m copyacross.cli --config config.yaml\n```\n\n---\n\n## Logging\n\n* By default, logs are printed to stdout.\n* Optional `log_file` parameter can write logs to a file.\n* Example:\n\n```python\ncopyacross.sync(\"config.yaml\", log_file=\"sync.log\")\n```\n\n---\n\n## Example Usage\n\n```python\nimport copyacross\n\n# One-way sync\ncopyacross.sync(\"config.yaml\")\n\n# Future dry-run (simulation without copying files)\n# copyacross.sync(\"config.yaml\", dry_run=True)\n```\n\n---\n\n## Developer Guide\n\n### Structure\n\n```\ncopyacross/\n\u251c\u2500\u2500 copyacross/          # Main package\n\u2502   \u251c\u2500\u2500 cli.py           # CLI entry point\n\u2502   \u251c\u2500\u2500 config.py        # YAML config loader\n\u2502   \u251c\u2500\u2500 logger.py        # Logging setup\n\u2502   \u251c\u2500\u2500 sync_engine.py   # Core sync logic\n\u2502   \u251c\u2500\u2500 transport.py     # Handles file transfers\n\u2502   \u251c\u2500\u2500 verifier.py      # File verification\n\u2502   \u251c\u2500\u2500 exceptions.py    # Custom exceptions\n\u251c\u2500\u2500 example/             # Example scripts\n\u251c\u2500\u2500 tests/               # Unit tests needed to be done\n\u251c\u2500\u2500 config.yaml          # Sample configuration\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 setup.cfg\n\u251c\u2500\u2500 pyproject.toml\n```\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n---\n\n## Contact\n\nCreated by [osc@compilersutra.com](mailto:osc@compilersutra.com).\nFor questions or feature requests, please open an issue on GitHub.\n\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Cross-platform file copy & verification tool",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/compilersutra/copyacross",
        "Issues": "https://github.com/compilersutra/copyacross/issues",
        "Source": "https://github.com/compilersutra/copyacross"
    },
    "split_keywords": [
        "scp",
        " file-transfer",
        " sync",
        " ssh",
        " verification",
        " devops"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "46a0c93d0ed1e9a801c372d6324f3dbad51c55ebab4962027e7c1d73ce9ad640",
                "md5": "b1b437e640ecd83f5111ada358dfe35c",
                "sha256": "583d47762a182691028bd058479263a23a34b0fadfddcccbcce475d2ec59d915"
            },
            "downloads": -1,
            "filename": "copyacross-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b1b437e640ecd83f5111ada358dfe35c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 12928,
            "upload_time": "2025-08-27T16:47:58",
            "upload_time_iso_8601": "2025-08-27T16:47:58.277046Z",
            "url": "https://files.pythonhosted.org/packages/46/a0/c93d0ed1e9a801c372d6324f3dbad51c55ebab4962027e7c1d73ce9ad640/copyacross-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "89a96fd2b041c7392567e7efc35542fe8436b2c75945fb32bbbf889aeb0d66e5",
                "md5": "74e82fc79020f9ee5d29e4146179edb3",
                "sha256": "9b015c0ee7b93da7ddc86879cd2c3017910b861ae238f2cad12019216ac84c98"
            },
            "downloads": -1,
            "filename": "copyacross-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "74e82fc79020f9ee5d29e4146179edb3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 11378,
            "upload_time": "2025-08-27T16:48:00",
            "upload_time_iso_8601": "2025-08-27T16:48:00.054351Z",
            "url": "https://files.pythonhosted.org/packages/89/a9/6fd2b041c7392567e7efc35542fe8436b2c75945fb32bbbf889aeb0d66e5/copyacross-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-27 16:48:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "compilersutra",
    "github_project": "copyacross",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "copyacross"
}
        
Elapsed time: 0.91212s