# angusrausch/connect_and_copy architecture

> Architecture diagram of the GitHub repository angusrausch/connect_and_copy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/angusrausch/connect_and_copy
- Repository: https://github.com/angusrausch/connect_and_copy

## Overview

Wireguard Copier runs a containerized backup workflow: the user supplies VPN and source/remote settings, launches the container, and files are copied to a home server over a WireGuard connection using an SMB or SSH destination. The README documents these capabilities, but source excerpts were unavailable, so internal call order and exact protocol wiring are not asserted.

Main entry points: [`entrypoint.sh`](https://github.com/angusrausch/connect_and_copy/blob/main/entrypoint.sh) (Entrypoint), [`run.sh`](https://github.com/angusrausch/connect_and_copy/blob/main/run.sh) (Run launcher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Launch"]
  node_run["Run launcher<br/>[run.sh]"]
end

subgraph group_runtime["Container runtime"]
  node_entry["Entrypoint<br/>[entrypoint.sh]"]
  node_vpn["WireGuard VPN"]
  node_rsync["Rsync copy"]
end

subgraph group_transfer["Transfer targets"]
  node_smb[("SMB share")]
  node_ssh[("SSH server")]
end

node_user(("User"))
node_local["Source files"]
node_remote(("Home server"))

node_user -->|"launches"| node_run
node_user -->|"runs container"| node_entry
node_user -->|"selects files"| node_local
node_entry -->|"connects"| node_vpn
node_entry -->|"runs copy"| node_rsync
node_rsync -.->|"copies to"| node_smb
node_rsync -.->|"copies to"| node_ssh
node_smb -->|"targets"| node_remote
node_ssh -->|"targets"| node_remote

click node_run "https://github.com/angusrausch/connect_and_copy/blob/main/run.sh"
click node_entry "https://github.com/angusrausch/connect_and_copy/blob/main/entrypoint.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_run,node_user toneBlue
class node_entry,node_vpn,node_rsync toneAmber
class node_smb,node_ssh,node_remote toneMint
class node_local toneIndigo
```

## Components

### Launch

- [Run launcher](https://github.com/angusrausch/connect_and_copy/blob/main/run.sh): `run.sh`

### Container runtime

- [Entrypoint](https://github.com/angusrausch/connect_and_copy/blob/main/entrypoint.sh): `entrypoint.sh`
- **WireGuard VPN**
- **Rsync copy**

### Transfer targets

- **SMB share**
- **SSH server**

### Other components

- **User**
- **Source files**
- **Home server**

## Connections

- User → Run launcher: launches
- User → Entrypoint: runs container
- User → Source files: selects files
- Entrypoint → WireGuard VPN: connects
- Entrypoint → Rsync copy: runs copy
- Rsync copy → SMB share: copies to
- Rsync copy → SSH server: copies to
- SMB share → Home server: targets
- SSH server → Home server: targets
