-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES
111 lines (92 loc) · 4.76 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Change History
==============
1.7 (2023-10-21)
----------------
- New -u/-g options.
- Fix resuming during initial sync.
- "missing ... on destination side" could happen for wrong reasons.
- Do not attempt to move/replace root folder.
- Accept symlink (to directory) for root path.
- Ignore some extended attributes that were found on Android.
- Really ignore trusted.SGI_ACL_{FILE,DEFAULT} extended attributes.
- Fix move of read-only directory.
- Speed up database journaling.
- Fix command-line parsing of HOST when it's [ipv6]:port.
1.6 (2017-01-21)
----------------
- --check option crashed on destination when it has untracked inodes
whose paths are greater (alphabetically) than any path on source side.
1.5 (2015-02-09)
----------------
- Several bugs causing the DB to be wrongly updated have been fixed. They are
quite severe because could later cause useless resync or corruption, and
as usual, it is advised to use --check & --force options if you think you
were affected. See messages of commits 45a3425, 5f98a37 & 87bbece for more
information.
- --check option crashed when used several times in a row.
- --check option learned to detect untracked files that have hardlinks.
This required to bump the protocol version.
1.4 (2014-09-08)
----------------
- In v1.3, the --check option was improved to check hardlinks but the
implementation was broken: this is now fixed.
- --check option learned to detect unexpected inodes on destination.
Those that are not filtered (by --filter, which is not ignored anymore
in this mode) are marked for deletion.
- --check option failed with an encoding error when paths were specified
at command line.
- A new --force option was added to check data even if metadata don't differ
between source and database. With the above improvements to --check, fssync
should now be able to recover from any inconsistency between the database
and the destination side.
- fssync now opens regular files for reading without updating the last access
time. I don't plan to do the same for directory listing because it's not
trivial (and in my opinion, last access time is so useless compared to what
it costs that `noatime` should be the default).
1.3 (2014-08-20)
----------------
This version fixes a few bugs related to hardlinks, symlinks and timestamps.
Unless you only use fssync for regular files and directories, it is advised
to use --check option.
- --check option has been improved to check hardlinks and acls. It now also
updates the database so that next synchronization fixes all found errors.
In order words, it now checks all metadata (and only that).
- In some cases, fssync failed to hardlink a new inode and instead created
different inodes on destination. This could happen when all hardlinks of an
old inode I were deleted and the new inode of different type was created with
same number I and hardlinked multiple times.
- Symlinks to different targets were treated as being of same type. Although
they are, in practice this is wrong because the kernel does not provide any
way to edit the target without deleting it first. A related bug was that
modification time of parent directory was not always checked.
- A possible case of wrong mtime for regular files has been fixed.
Other changes:
- fssync now checks that local and remote speak same protocol, so that users
do not run versions that differ too much on both sides.
- fssync learned to resume synchronization of new files.
- A file descriptor leak when handling hardlinks/renames has been fixed.
1.2 (2014-06-24)
----------------
- The modification time of a directory could be wrongly left altered after
children were synchronized. This case happened when the source timestamp
was explicitly restored to its original value, in such way that fssync
thought metadata were the same on both sides.
- All failures due to a missing inode on destination side should be fixed,
with a warning. If this inode was already visited, it is required to run
fssync again to restore. Of course, fssync should be the only process that
modifies destination which means such case should not happen, but it's simple
and safe to recover.
- Default value of -R option is documented and fixed.
1.1 (2014-03-10)
----------------
- Destination side failed at synchronizing extended attributes.
- README: What is not synchronized is documented in paragraph 4
of BUGS/LIMITATIONS/TODO section.
- Better support of mount points, to safely synchronize when everything is
unmounted, without having to explicitly filter them. Instead of deleting
inodes (usually empty directories) that get masked by other filesystems,
fssync now checks these inodes don't appear in the visible/synchronized tree.
`fssync_root` example is updated to reflect this.
1.0 (2013-12-18)
----------------
Initial release.