11# Java based encrypting File Syncing Tool
22
33[ ![ Latest Release] ( https://img.shields.io/github/release/mgoellnitz/JFileSync3.svg )] ( https://github.com/mgoellnitz/JFileSync3/releases/latest )
4+ [ ![ Build Status] ( https://img.shields.io/github/actions/workflow/status/mgoellnitz/JFileSync3/gradle.yml )] ( https://github.com/mgoellnitz/JFileSync3/actions/workflows/gradle.yml )
45[ ![ Build Status] ( https://img.shields.io/gitlab/pipeline/mgoellnitz/JFileSync3.svg )] ( https://gitlab.com/mgoellnitz/JFileSync3/pipelines )
56[ ![ Download] ( https://img.shields.io/badge/Download-Snapshot-blue )] ( https://gitlab.com/mgoellnitz/JFileSync3/-/jobs/artifacts/master/download?job=JFileSync3 )
67
7- File syncing with optional compression and encryption for local and WebDAV
8- folders. For local folders encryption can use EncFS and thus be compatible with
9- encfs4win, BoxCryptor Classic, Encdroid and so on.
8+ File syncing with optional compression and encryption for local and WebDAV
9+ folders. For local folders, encryption can optionally be accomplished with
10+ EncFS and thus be compatible with encfs4win, EDS Lite, Encdroid and so on.
11+
12+ [ Support this project] ( https://ko-fi.com/backendzeit ) :
13+ [ ![ ko-fi] ( https://ko-fi.com/img/githubbutton_sm.svg )] ( https://ko-fi.com/L4L5T3APO )
1014
1115JFileSync3 comes with a GUI, command line tooling, and stored profiles.
1216
13- Find more on the scenarios where this tool might help you in in the growing
14- [ project wiki] ( https://github.com/mgoellnitz/JFileSync3/wiki ) . Recently a
15- little bit of discussion started in the [ issues area at GitHub] ( https://github.com/mgoellnitz/JFileSync3/issues )
17+ Find more on the scenarios where this tool might help you in the rather small
18+ [ project wiki] ( https://github.com/mgoellnitz/JFileSync3/wiki ) . We have a
19+ little bit of discussion in the [ issues area at GitHub] ( https://github.com/mgoellnitz/JFileSync3/issues ) ,
1620so feel free to add your comments there.
1721
18- This software was developed because I personally needed an easy to use syncing
19- tool to have everyday backups - without the need of multiple versions in file
20- history - of highly confidential material - business and private.
22+ This software was developed because I personally needed an easy to use syncing
23+ tool to have everyday backups of highly confidential material - business and
24+ private. - without any need of multiple versions in file history.
2125
22- None of the services I came accross could suit these needs.
26+ None of the services I came across could suit these needs.
2327
24- The second reason why I find it helpful is, that I very much rely on online-syncing
25- tools for everyday backups and felt forced to use more than one of these
26- services.
28+ The second reason why I find it helpful is, that I very much rely on online-syncing
29+ tools for everyday backups and felt forced to use more than one of these
30+ services.
2731
28- Using too many of them slows down your local machine too much, so I identified
29- a set of backup areas which didn't need online syncing but just regular cloud
30- based backup . Some of the syncing services available provide WebDAV backends,
32+ Using too many of them slows down your local machine too much, so I identified
33+ a set of backup areas which didn't need online syncing but just regular cloud
34+ based backups . Some of the syncing services available provide WebDAV backends,
3135so I can decide to use a service online or manual (scheduled).
3236
33- JFileSync3 is heavily based on the work of Jens Heidrich and his JFileSync2.2.
34- After some hacking aroung in his code I felt that this one here is a fork,
35- ripping out his original remote backends and changing the purpose of the tool
36- quite a lot.
37+ JFileSync3 is heavily based on the work of Jens Heidrich and his JFileSync2.2.
38+ After some hacking around in his code, I felt that this one here is a fork,
39+ ripping out his original remote backends and changing the purpose of the tool
40+ quite a lot.
3741
38- I had to realise the Jens re-started his work on the original product, so that
39- this decision now would need some rethinking. Be aware that this code here is
42+ I had to realise, that Jens re-started his work on the original product, so that
43+ this decision now would need some rethinking. Be aware that this code here is
4044based on the 2007 version JFileSync2.2 and not the more recent 2.3 and 2.4 work,
41- which heads in part in similar directions as my code (ripping out the server,
45+ which heads in part in similar directions as my code (ripping out the server,
4246using VFS, presenting a new Windows and even Mac integration). I did a manual
43- back sync with 2.3a recently .
47+ back sync with 2.3a a while ago .
4448
4549JFileSync is a SourceForge project and available via the following URL:
4650
4751```
4852http://jfilesync.sourceforge.net/
4953```
5054
51- Don't mix the derived work here and Jens' clean software on sourceforge . Only
52- bother him if it's related to his original version. Other complaints go here
55+ Don't mix the derived work here and Jens' clean software on SourceForge . Only
56+ bother him if it's related to his original version. Other complaints go here
5357:-) Feel free to add any issues to this project here.
5458
55- Other contributions - though not directly committed by him - are from
56- https://github.com/srmo . Thanks so much for the fruitfull discussions.
59+ Other contributions - though not directly committed by him - are from
60+ https://github.com/srmo . Thanks so much for the fruitful discussions.
5761
5862
5963## Online Scenario
6064
61- You replaced (or want to) your regular backups with online syncing tools and
62- don't have backup media anymore. This helps doing backups of your work in
63- remote situations where e.g. don't want to carry confidential backup media with
65+ You replaced (or want to) your regular backups with online syncing tools and
66+ don't have backup media anymore. This helps to do backups of your work in
67+ remote situations where e.g. don't want to carry confidential backup media with
6468you.
6569
6670Possible Solutions:
6771
6872a) Trust the providers
6973
70- Select any of them - I have some personal notes on the in the wiki.
74+ Select any of them - I have some personal notes on them in the wiki.
7175
7276b) Trust the providers encryption
7377
74- Use Teamdrive, or iDrive Sync. With Teamdrive you can - in some cases - even
75- see the encrypted files depending on the backend you use. With iDrive Sync you
76- have to provide a custom password as a base for the generated keys (This rips
77- out some functions like sharing which gives you a hint, that they really do
78- what they are saying).
78+ Mega might have decent encryption keys, which you can extract locally. But you
79+ cannot really see the encryption working. Other examples, I came across, are
80+ similar.
7981
80- c) Encrypt locally on every file access and thus only sync encrypted stuff
82+ c) Encrypt locally on every file access and thus only sync encrypted stuff
8183which you can still see.
8284
83- Boxcryptor, EncFS come into my mind. Disadvantage here is the de- and
84- encryption on nearly every access. Really locally stored are only the encrypted
85- files.
85+ EncFS e.g. comes into my mind. Disadvantage here is the de- and encryption on
86+ nearly every access. Locally stored are in fact only the encrypted files.
8687
87- d) If you trust your local system and need to store frequently accessed files,
88+ d) If you trust your local system and need to store frequently accessed files,
8889you would like to encrypt only short before or on backing up/syncing files.
8990
90- This is where this software fills the gap. It can sync directories, local or
91- WebDAV, and it can do this with either of these encrypted. Additionally it can
92- sync with encfs volumes stored in local folders. It is my common practice, that
93- the local encrypted folders are in turn synced with one of the online syncing
91+ This is where this software fills the gap. It can sync directories, local or
92+ WebDAV, and it can do this with either of these encrypted. Additionally, it can
93+ sync with EncFS volumes stored in local folders. It is my common practice, that
94+ the local encrypted folders are in turn synced with one of the online syncing
9495services.
9596
96- If you use EncFS in this scenario, it is possible to access the encrypted and
97- synced files from mobile devices with Boxcryptor Classic for iOS and Android
98- and additionally EncFS tools for android. Also this EncFS solution is
99- compatible with encfs4win and of course Linux based encfs .
97+ If you use EncFS in this scenario, it is possible to access the encrypted and
98+ synced files from mobile devices with FolderSync and Encroid or EDS. Also, this
99+ EncFS solution is compatible with EncFS MP on MacOS and Windows, and Linux
100+ based EncFS .
100101
101102
102103## Requirements
103104
104- - Java 8 Runtime Environment, OpenJDK JRE supported and recommended
105+ - Java 17 Runtime Environment, OpenJDK based JREs supported and recommended
105106
106- - Only when using other algorithms than AES with such oldish JRE: JCE Extension
107+ We recommend using Java 17 or 21 LTS versions if possible.
107108
108109
109110## Installation and Application Start
110111
111- Unzip the distribution file to a directory of your choice.
112+ Though the build scripts (see below) additionally generate RPM and DEB packages,
113+ the distribution currently only consists of a ZIP file. If you are in the
114+ position, you might try the DEB or RPM package and provide feedback.
115+
116+ Unzip the distribution file to a directory of your choice. The XDG launcher
117+ script can be automatically modified to reflect this path with the script
118+ ` prepare_xdg_file.sh ` .
112119
113120You can start the application through
114121
@@ -117,24 +124,20 @@ You can start the application through
117124- a Unix shell script ('bin/JFileSync3')
118125- a XDG launcher script ('bin/JFileSync3.desktop')
119126
120- ATTENTION: Because JFileSync3 is distributed as a Zip archive, Unix users will
121- have to give executable rights manually before launching the application, e.g.:
122- 'chmod a+rx bin/JFileSync3'.
123-
124- Nearly all functions of JFileSync3 can be controlled via the Graphical User
125- Interface (GUI). However, JFileSync3 provides full access to all features
127+ Nearly all functions of JFileSync3 can be controlled via the Graphical User
128+ Interface (GUI). However, JFileSync3 provides full access to all features
126129(apart from plug-ins) via the command line interface. Call ` bin/JFileSync3 -help `
127130to get an overview of all possible command line options.
128131
129132
130133## Configuration
131134
132- JFileSync3 works with profiles controlling which folders to use, which files to
133- include or ommit , how to log into WebDAV servers, and which encryption cipher
135+ JFileSync3 works with profiles controlling which folders to use, which files to
136+ include or omit , how to log into WebDAV servers, and which encryption cipher
134137and passphrase to use.
135138
136- These profiles need to be set up and can be stored in XML files. The
137- distribution contains a set of profile file examples illustrating all the
139+ These profiles need to be set up and can be stored in XML files. The
140+ distribution contains a set of profile file examples illustrating all the
138141intended scenarios.
139142
140143
@@ -171,23 +174,23 @@ Some code in LZMA SDK is based on public domain code from other developers:
171174 1 ) PPMd var.H (2001): Dmitry Shkarin
172175 2 ) SHA-256: Wei Dai (Crypto++ library)
173176
174- You can find a copy all licenses of JFileSync3 and the used libraries in the
177+ You can find a copy of all licenses of JFileSync3 and the used libraries in the
175178` legal/ ` directory of this distribution.
176179
177180
178181## Development Notes
179182
180183Required packages for JFileSync3 development (not included in the distribution):
181184
182- * Java 8 SDK >= 1.8.0 (see ' http ://java.sun.com ' )
183- * Launch4j installation on the path (see https://sourceforge.net/projects/launch4j/ )
185+ * Java 11 SDK or above (see e.g. ` https ://projects.eclipse.org/projects/adoptium ` )
186+ * [ Launch4j] ( https://sourceforge.net/projects/launch4j/ ) installation on the path
184187
185- Used and as a result recommended development tools:
188+ Used, and as a result recommended, development tools are :
186189
187- * OpenJDK 11.0
188- * Netbeans 12.5
190+ * OpenJDK 17, or 21 respectively.
191+ * Netbeans 21 or above
189192
190- The following structure describes all directories and files included in the
193+ The following structure describes all directories and files included in the
191194JFileSync3 source repository:
192195
193196- src: Java source code
@@ -197,23 +200,23 @@ JFileSync3 source repository:
197200- win: start scripts for parts of the system as tools - and a Windows icon file
198201- test: profiles and data for the encryption test suite
199202
200- The encryption backend tries its very best to avoid known plaintext attacks
201- with filenames like in directory names (` src/main/java ` ) and with the contents
203+ The encryption backend tries its very best, to avoid known plaintext attacks
204+ with filenames like in directory names (` src/main/java ` ) and with the contents
202205of the files.
203206
204- The contents are compressed before they are encrypted (in most cases -
205- depending on size and special file types) and the software tries three
206- algorithms to do that - LZMS , BZIP2, Deflate - in parallel .
207+ The contents are compressed before they are encrypted (in most cases -
208+ depending on size and special file types) and the software tries three
209+ algorithms to do that - LZMA , BZIP2, Deflate - concurrently .
207210
208211The filenames are encoded, scrambled and then encrypted.
209212
210- Metafiles to speed up access of the directory structures don't have constant
211- names but calculated ones.
213+ Metafiles to speed up access of the directory structures don't have constant
214+ names, but calculated ones.
212215
213- Passwords to derive keys from are not constant along the whole directory
216+ Passwords to derive keys from are not constant along the whole directory
214217structure.
215218
216- For oldish Java 8 setups you will need the unlimited encryption add-on by
219+ For oldish Java 8 setups, you will need the unlimited encryption add-on by
217220Oracle for your JDK, if you want to use anything except the default cipher AES.
218221
219222Feel free to issue bug reports and ideas here.
@@ -235,10 +238,10 @@ and can be started - e.g. for IDE integration - through
235238./gradlew run
236239```
237240
238- Take the ZIP file from build/distributions.
241+ Take the ZIP, DEB, or RPM file from build/distributions.
239242
240- A small test-suite can be found in profiles/test (which is not packaged in the
241- distribtions zip) and can be called via
243+ A small test-suite can be found in profiles/test (which is not packaged in the
244+ distribution zip) and can be called via
242245
243246``` bash
244247./gradlew encryptionTest
0 commit comments