dsh-drive-backup
基于 rclone 的备份工具,含四个工具:目标清单、本地/远端状态、rclone check 校验,以及带预演与审计行的审批式 copy/sync 传输。需已安装 rclone 并用 `rclone config` 配好远端;插件不读取 rclone 配置或凭据。
安装
dsh plugin --profile web add dsh-drive-backup
沙箱测试
这个插件还没测过。提交测试 →
README
dsh-drive-backup
DeepSeek Harness için
rclone tabanlı yedek araçları.
dsh-drive-backup, DSH ajanına küçük ve açık bir yedek aracı seti verir: neyin
ayarlı olduğunu gör, uzak kopyanın güncel olup olmadığını kontrol et, doğrula ve
transferi çalıştır — sonuncusu yalnızca senin onayınla.
Hedefler ayarlardan gelen bir izin listesidir, komutlar argv dizisidir (kabuk
dizesi değil), deneme çalıştırması (dry-run) ücretsizdir ve her gerçek transfer
tek satır denetim kaydı bırakır.
Araçlar
Araç · Tür · Ne yapar
backup_targets · salt-okunur · Ayarlı hedefleri listeler: yerel yol, rclone hedefi, mod, zaman aşımı, hariç tutmalar.
backup_status · salt-okunur · Tek hedef veya hepsi için yerel boyut, uzak boyut ve en yeni uzak dosyalar.
backup_verify · salt-okunur · Yerel yol ile uzak kopya arasında rclone check; eşleşen/farklı dosya sayısı ve örnekler.
backup_transfer · onaylı · Bir hedef için rclone copy/sync. dryRun: true onay istemez; gerçek transfer önce onay ister.
Modlar
copy(varsayılan) — yeni ve değişmiş dosyaları yükler, uzaktaki dosyaları
asla silmez. Zaman damgalı yedekler için güvenli.
sync— yerel yolu aynalar; yerelde olmayan dosyalar uzakta silinir.
Hedef başına açıkça seçilmelidir.
Kurulum
dsh plugin --profile web add dsh-drive-backup systemctl restart dsh-web # veya DSH sürecinizi yeniden başlatın
Sonra rclone remote'unu ve hedeflerini ayarla:
- id: drive-backup
config:
remote: grive
targets:
- id: openviking
label: OpenViking hafızası
local: /root/backups
remotePath: dsh-backups/openviking
mode: copy
timeoutMs: 600000
- id: kod
label: Kod ve ayarlar
local: /root/backups
remotePath: dsh-backups/kod
mode: copy
excludes: ['*.log', '*.dump']
verify:
sizeOnly: true
safety:
readOnly: false
requireApproval: true
timeoutMs: 120000
maxOutputBytes: 65536
audit:
file: /root/.dsh/logs/drive-backup-audit.log
rclone remote'u önceden ayarlanmış olmalı (rclone config); bu eklenti rclone
yapılandırma dosyasına dokunmaz ve kimlik bilgisi okumaz.
Ayarlar
Anahtar · Varsayılan · Anlamı
remote · grive · rclone remote adı.
rclone · rclone · rclone çalıştırılabilir adı veya mutlak yolu.
targets[].id · — · Araçların kullandığı kimlik ([a-z0-9_-]).
targets[].label · '' · İnsan etiketi; model kimlik yerine bunu da kullanabilir.
targets[].local · — · Mutlak yerel dosya veya dizin.
targets[].remotePath · — · Remote köküne göre yol; göreli, .. içermez.
targets[].mode · copy · copy veya sync.
targets[].excludes · [] · rclone hariç tutma desenleri.
targets[].transfers · 4 · Paralel transfer sayısı.
targets[].timeoutMs · 600000 · Bu hedef için duvar saati sınırı.
verify.sizeOnly · true · Yalnızca boyut karşılaştır; false hash karşılaştırır (yavaş).
safety.readOnly · false · true iken backup_transfer reddeder; inceleme çalışır.
safety.requireApproval · true · Gerçek transferler önce onay ister.
safety.timeoutMs · 120000 · Varsayılan komut zaman aşımı.
safety.maxOutputBytes · 65536 · Çağrı başına çıktı sınırı.
audit.file · <DSH_HOME>/logs/drive-backup-audit.log · Denetim dosyası.
Güvenlik modeli
- İzin listesi. Yalnızca ayarlı hedefler vardır; bilinmeyen kimlik, ayarlı
listeyle birlikte reddedilir ve modele isim uydurmaması söylenir.
- Yalnızca argv.
rcloneçalıştırılabilir + argüman dizisi olarak koşar;
hedef yolları kabuk sözdizimine dönüşmez, remote yolları doğrulanır (göreli,
.. yok).
- Önce dry-run.
backup_transfer+dryRun: trueneyin taşınacağını listeler,
onay istemez.
- Onay kapalı-kapıya. Gerçek transfer yalnızca
allowed-onceile çalışır;
onay mekanizması yoksa veya hata verirse hiçbir şey olmaz.
- Sınırlı. Her transferin zaman aşımı ve çıktı sınırı vardır.
- Denetimli. Deneme başına tek JSON satırı:
{"ts":"…","tool":"backup_transfer","target":"openviking","mode":"copy","outcome":"executed",…}.
Örnek akış
backup_status → yerelde ne var, uzakta ne var, ne kadar taze
backup_transfer {id:"openviking", dryRun:true} → ne yükleneceğini göster (onaysız)
backup_transfer {id:"openviking"} → onay kartı → transfer → denetim satırı
backup_verify {id:"openviking"} → "2 dosya eşleşiyor, 0 farklı"
Gereksinimler
- DSH
>= 0.2.1-rc.4(Node^22.19.0 || >=24.0.0). - PATH'te
rclone(veya mutlak yolla ayarlı) ve remote'un kurulu olması.
Geliştirme
npm run link-peers node --test
Lisans
MIT
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:2,最后更新 2026-10-31