Giter Site home page Giter Site logo

skyzi000 / skyzibackup Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 629 KB

ファイル単位で圧縮と暗号化のできる、簡単操作の無料ファイルバックアップソフト

Home Page: https://skyzibackup.skyzi.jp/

License: MIT License

C# 100.00%
wpf backup windows csharp dotnet encryption compression gui

skyzibackup's Introduction

SkyziBackupSkyziBackup

Release Download Last Commit Build CodeQL LICENSE Twitter

Quality Gate Status Maintainability Rating Reliability Rating Security Rating Technical Debt Lines of Code

ファイル単位で圧縮と暗号化のできる、インストール不要の無料ファイルバックアップソフトです。
自分に合う無料のファイルバックアップソフトが見つからなかったので、C#の勉強もかねて自作しました。
しかしながらこのソフトは未完成であり、致命的な不具合が存在する可能性が高い点を予めご了承ください。

公式サイト

公式サイトを作りました!
https://skyzibackup.skyzi.jp/
まだコンテンツは少ないですが、上記リンクから見ることができます。

特徴

  • オープンソース
  • インストール不要
  • AesCngクラスを利用した高速かつ強力なAES256(CBCモード)暗号化
  • 暗号化したファイルはOpenSSLを使って個別に復号可能
  • ファイル単位で圧縮&暗号化が可能
  • データベースを利用することで、バックアップ先ドライブが低速な場合でも高速にファイルの比較が可能
  • 作成日時・更新日時・ファイル属性をコピー可能(セキュリティ属性や、圧縮/暗号化/スパース属性は未対応)
  • 削除または上書きされたファイルのバージョン管理機能を搭載
  • 除外パターンで柔軟な除外設定が可能
  • ハッシュ値(SHA1)によるファイルの比較が可能
  • リパースポイント(シンボリックリンク/ジャンクション)の取り扱い方を選択可能
  • 同時に複数のバックアップを実行可能
  • 260字以上の長いファイルパスに対応
  • 詳細なログ出力

削除方法

ファイル(F)メニューのデータ保存先を開くで開いた先のフォルダを削除
%LOCALAPPDATA%\Skyzi000\ 以降のSkyziBackupで始まる名前のフォルダを削除
ダウンロードしたフォルダを削除

動作環境

Windows 10, 11 (64bit) 最新の .NET デスクトップ ランタイム (x64) がインストールされている必要があります。
必要なランタイムは以下のページからインストールできます。
https://dotnet.microsoft.com/ja-jp/download/dotnet/6.0
.NET "Desktop" Runtime でないと動かないので気を付けてください!

ダウンロード

https://github.com/skyzi000/SkyziBackup/releases/latest

コマンドライン引数

SkyziBackup.exe バックアップ元フォルダ バックアップ先フォルダ

上の例のように引数を2つ与えることで、バックグラウンドで起動しバックアップした後、自動的にプログラムを終了します。
タスクスケジューラに登録すると自動的にバックアップできるので便利です。
(暗号化する場合は一度手動でバックアップして暗号化パスワードを記録しておく必要があります)

リストア(復元)

表示(V)メニューからリストアウィンドウを開いて復元します。
復元時はバックアップ時と同じ設定にしてください。
オプション(O) > ローカル設定(L)から手動で設定するか、ファイル(F) > 設定をファイルからインポート(I)で設定ファイル(.json)を読み込むことができます。

このアプリケーションを使わずに復元する方法(推奨はしません)

このアプリケーションを使って暗号化したファイルは、OpenSSLで復号することもできます。(OpenSSL 1.1.1kで確認)
例)

openssl enc -d -aes256 -pbkdf2 -in 復号したいファイル -out 復号後のファイル -k "password"

また、圧縮と暗号化を両方有効にしている場合は、復号してから解凍します。
PowerShellを利用して解凍することができます。
(例: https://gist.github.com/skyzi000/2c3b8710aea35f0fd7d5f97fdfbda16c )

ビルド

Visual Studio 2022 が必要です。

連絡先

必ずしも対応できるとは限りません。予めご了承ください。

よくある質問ページもどうぞ。

ライセンス

このアプリケーションはMIT Licenseのもとで公開されています。
https://github.com/skyzi000/SkyziBackup/blob/develop/LICENSE

サードパーティーライセンス

このアプリケーションは下記のライブラリを使用しています。

Copyright (c) 2019 Yimeng Wu
https://github.com/Kinnara/ModernWpf/blob/master/LICENSE

Copyright (c) .NET Foundation and Contributors
https://github.com/dotnet/Nerdbank.GitVersioning/blob/master/LICENSE

Copyright (c) 2004-2021 Jaroslaw Kowalski <[email protected]>, Kim Christensen, Julian Verdurmen
https://github.com/NLog/NLog/blob/master/LICENSE.txt

Copyright (c) 2016-2019 Petr Korolev
https://github.com/github-changelog-generator/github-changelog-generator/blob/master/LICENSE

skyzibackup's People

Contributors

dependabot[bot] avatar skyzi000 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

skyzibackup's Issues

設定画面の実装

グローバル設定とローカル設定をGUIから変更できるようにする

Dataフォルダの中身を分かりやすくする

手っ取り早いのは各フォルダの直下に[.ShellClassInfo]を持たせたdesktop.iniを作成することか……?
LocalizedResourceNameをGUIのローカル設定画面で設定できるようにしたら分かりやすいかもしれない。
InfoTipでバックアップ元フォルダとバックアップ先フォルダのパスを表示する……のは文字数制限(よくわからないけど試してみたところ70文字ちょい程度……?)に引っかかるか……いや、それぞれのパスの末尾から30字程度までにカットすることで文字数制限に引っかからずに分かりやすく表示するという目的は達せられるかも?
InfoTipはShift-JISで保存したら日本語や漢字でも表示できるみたい。

ログの出力レベルを設定できるようにする

現在はInfoレベル以上をファイルに出力しているが、ファイル数の多いディレクトリをバックアップするとログファイルが巨大になってしまう。
ただ、現状ログでしか結果の確認が基本出来ないので、 #10 の必要性が高いかもしれない。

バックアップ先ファイルの方が新しい場合に無視する設定を追加する

ComparisonMethodとは別に追加する……?
データベースの情報だけではバックアップ先ファイルの更新は検知できないので、通常の比較処理を行う前に(除外パターンでのマッチング直後?)実ファイル同士で比較する必要があるかな
その場合バックアップ先ファイルへのアクセスが必須になってデータベースの利点が若干薄れそうなので微妙オプションかな……

除外パターンを内部的にディレクトリ用とファイル用に分割する

マッチングする除外パターンを分けることで除外パターンのマッチング回数を減らすことができる。
ファイルバックアップ時にバックアップ先のディレクトリが存在しない場合、例外を出すことなくそのファイルをバックアップしないようにする必要がある。

データベースの変数名を短い名前にする

データベースの記述に無駄が多いのでできるだけ減らす(それよりJSONを使う方が良い……?)
データメンバーを一文字のaとかlとかの変数名にして、アクセスはpublicなプロパティから行うようにする。

シンボリックリンクやジャンクションに対応する

無視するのは簡単にできそうだが、リパースポイントをそのままバックアップ先に再現するのは骨が折れそう
というか、ジャンクションはともかくシンボリックリンクは作成するのに特権が必要だし相対パスでの指定もアリだしどうするのが良いか

ファイル名暗号化機能の実装

ファイル名をAESで暗号化する場合、2度目以降のバックアップ時はファイルの関連付けをデータベースに頼ることになる?
(バックアップ元が同じファイル名であっても、暗号化する度に異なる文字列になるはずなので。データベースに存在しないファイルだけファイル名を暗号化するという感じにするか)

また、Salted__のprefixはファイル名には付けないようにする(prefixが無くてもソルトのバイト数は固定なので復号できるが、OpenSSLでファイル名を復号する場合は手動でprefixを付けることになるか)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.