forked from TrueCloudLab/rclone
bisync: typo corrections & other doc improvements
This commit is contained in:
parent
0dd0d6a13e
commit
9b3b1c7067
1 changed files with 74 additions and 28 deletions
|
@ -230,7 +230,7 @@ files and a bunch of new files.
|
||||||
This safety check is intended to block bisync from deleting all of the
|
This safety check is intended to block bisync from deleting all of the
|
||||||
files on both filesystems due to a temporary network access issue, or if
|
files on both filesystems due to a temporary network access issue, or if
|
||||||
the user had inadvertently deleted the files on one side or the other.
|
the user had inadvertently deleted the files on one side or the other.
|
||||||
To force the sync either set a different delete percentage limit,
|
To force the sync, either set a different delete percentage limit,
|
||||||
e.g. `--max-delete 75` (allows up to 75% deletion), or use `--force`
|
e.g. `--max-delete 75` (allows up to 75% deletion), or use `--force`
|
||||||
to bypass the check.
|
to bypass the check.
|
||||||
|
|
||||||
|
@ -247,17 +247,17 @@ An [example filters file](#example-filters-file) contains filters for
|
||||||
non-allowed files for synching with Dropbox.
|
non-allowed files for synching with Dropbox.
|
||||||
|
|
||||||
If you make changes to your filters file then bisync requires a run
|
If you make changes to your filters file then bisync requires a run
|
||||||
with `--resync`. This is a safety feature, which avoids existing files
|
with `--resync`. This is a safety feature, which prevents existing files
|
||||||
on the Path1 and/or Path2 side from seeming to disappear from view
|
on the Path1 and/or Path2 side from seeming to disappear from view
|
||||||
(since they are excluded in the new listings), which would fool bisync
|
(since they are excluded in the new listings), which would fool bisync
|
||||||
into seeing them as deleted (as compared to the prior run listings),
|
into seeing them as deleted (as compared to the prior run listings),
|
||||||
and then bisync would proceed to delete them for real.
|
and then bisync would proceed to delete them for real.
|
||||||
|
|
||||||
To block this from happening bisync calculates an MD5 hash of the filters file
|
To block this from happening, bisync calculates an MD5 hash of the filters file
|
||||||
and stores the hash in a `.md5` file in the same place as your filters file.
|
and stores the hash in a `.md5` file in the same place as your filters file.
|
||||||
On the next runs with `--filters-file` set, bisync re-calculates the MD5 hash
|
On the next run with `--filters-file` set, bisync re-calculates the MD5 hash
|
||||||
of the current filters file and compares it to the hash stored in `.md5` file.
|
of the current filters file and compares it to the hash stored in the `.md5` file.
|
||||||
If they don't match the run aborts with a critical error and thus forces you
|
If they don't match, the run aborts with a critical error and thus forces you
|
||||||
to do a `--resync`, likely avoiding a disaster.
|
to do a `--resync`, likely avoiding a disaster.
|
||||||
|
|
||||||
#### --check-sync
|
#### --check-sync
|
||||||
|
@ -277,6 +277,8 @@ sync run times for very large numbers of files.
|
||||||
The check may be run manually with `--check-sync=only`. It runs only the
|
The check may be run manually with `--check-sync=only`. It runs only the
|
||||||
integrity check and terminates without actually synching.
|
integrity check and terminates without actually synching.
|
||||||
|
|
||||||
|
See also: [Concurrent modifications](#concurrent-modifications)
|
||||||
|
|
||||||
|
|
||||||
#### --ignore-listing-checksum
|
#### --ignore-listing-checksum
|
||||||
|
|
||||||
|
@ -391,7 +393,7 @@ as a `--resync` is no longer required, so long as the same change has been made
|
||||||
|
|
||||||
### All files changed check {#all-files-changed}
|
### All files changed check {#all-files-changed}
|
||||||
|
|
||||||
if _all_ prior existing files on either of the filesystems have changed
|
If _all_ prior existing files on either of the filesystems have changed
|
||||||
(e.g. timestamps have changed due to changing the system's timezone)
|
(e.g. timestamps have changed due to changing the system's timezone)
|
||||||
then bisync will abort without making any changes.
|
then bisync will abort without making any changes.
|
||||||
Any new files are not considered for this check. You could use `--force`
|
Any new files are not considered for this check. You could use `--force`
|
||||||
|
@ -428,7 +430,7 @@ It is recommended to use `--resync --dry-run --verbose` initially and
|
||||||
_carefully_ review what changes will be made before running the `--resync`
|
_carefully_ review what changes will be made before running the `--resync`
|
||||||
without `--dry-run`.
|
without `--dry-run`.
|
||||||
|
|
||||||
Most of these events come up due to a error status from an internal call.
|
Most of these events come up due to an error status from an internal call.
|
||||||
On such a critical error the `{...}.path1.lst` and `{...}.path2.lst`
|
On such a critical error the `{...}.path1.lst` and `{...}.path2.lst`
|
||||||
listing files are renamed to extension `.lst-err`, which blocks any future
|
listing files are renamed to extension `.lst-err`, which blocks any future
|
||||||
bisync runs (since the normal `.lst` files are not found).
|
bisync runs (since the normal `.lst` files are not found).
|
||||||
|
@ -480,7 +482,7 @@ It has not been fully tested with other services yet.
|
||||||
If it works, or sorta works, please let us know and we'll update the list.
|
If it works, or sorta works, please let us know and we'll update the list.
|
||||||
Run the test suite to check for proper operation as described below.
|
Run the test suite to check for proper operation as described below.
|
||||||
|
|
||||||
First release of `rclone bisync` requires that underlying backend supported
|
First release of `rclone bisync` requires that underlying backend supports
|
||||||
the modification time feature and will refuse to run otherwise.
|
the modification time feature and will refuse to run otherwise.
|
||||||
This limitation will be lifted in a future `rclone bisync` release.
|
This limitation will be lifted in a future `rclone bisync` release.
|
||||||
|
|
||||||
|
@ -495,22 +497,43 @@ This will be solved in a future release, there is no workaround at the moment.
|
||||||
Files that **change during** a bisync run may result in data loss.
|
Files that **change during** a bisync run may result in data loss.
|
||||||
This has been seen in a highly dynamic environment, where the filesystem
|
This has been seen in a highly dynamic environment, where the filesystem
|
||||||
is getting hammered by running processes during the sync.
|
is getting hammered by running processes during the sync.
|
||||||
The solution is to sync at quiet times or [filter out](#filtering)
|
The currently recommended solution is to sync at quiet times or [filter out](#filtering)
|
||||||
unnecessary directories and files.
|
unnecessary directories and files.
|
||||||
|
|
||||||
### Empty directories
|
As an [alternative approach](https://forum.rclone.org/t/bisync-bugs-and-feature-requests/37636#:~:text=scans%2C%20to%20avoid-,errors%20if%20files%20changed%20during%20sync,-Given%20the%20number),
|
||||||
|
consider using `--check-sync=false` (and possibly `--resilient`) to make bisync more forgiving
|
||||||
|
of filesystems that change during the sync.
|
||||||
|
Be advised that this may cause bisync to miss events that occur during a bisync run,
|
||||||
|
so it is a good idea to supplement this with a periodic independent integrity check,
|
||||||
|
and corrective sync if diffs are found. For example, a possible sequence could look like this:
|
||||||
|
|
||||||
New empty directories on one path are _not_ propagated to the other side.
|
1. Normally scheduled bisync run:
|
||||||
This is because bisync (and rclone) natively works on files not directories.
|
|
||||||
The following sequence is a workaround but will not propagate the delete
|
|
||||||
of an empty directory to the other side:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
rclone bisync PATH1 PATH2
|
rclone bisync Path1 Path2 -MPc --check-access --max-delete 10 --filters-file /path/to/filters.txt -v --check-sync=false --no-cleanup --ignore-listing-checksum --disable ListR --checkers=16 --drive-pacer-min-sleep=10ms --create-empty-src-dirs --resilient
|
||||||
rclone copy PATH1 PATH2 --filter "+ */" --filter "- **" --create-empty-src-dirs
|
|
||||||
rclone copy PATH2 PATH2 --filter "+ */" --filter "- **" --create-empty-src-dirs
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
2. Periodic independent integrity check (perhaps scheduled nightly or weekly):
|
||||||
|
|
||||||
|
```
|
||||||
|
rclone check -MvPc Path1 Path2 --filter-from /path/to/filters.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
3. If diffs are found, you have some choices to correct them.
|
||||||
|
If one side is more up-to-date and you want to make the other side match it, you could run:
|
||||||
|
|
||||||
|
```
|
||||||
|
rclone sync Path1 Path2 --filter-from /path/to/filters.txt --create-empty-src-dirs -MPc -v
|
||||||
|
```
|
||||||
|
(or switch Path1 and Path2 to make Path2 the source-of-truth)
|
||||||
|
|
||||||
|
Or, if neither side is totally up-to-date, you could run a `--resync` to bring them back into agreement
|
||||||
|
(but remember that this could cause deleted files to re-appear.)
|
||||||
|
|
||||||
|
*Note also that `rclone check` does not currently include empty directories,
|
||||||
|
so if you want to know if any empty directories are out of sync,
|
||||||
|
consider alternatively running the above `rclone sync` command with `--dry-run` added.
|
||||||
|
|
||||||
### Empty directories
|
### Empty directories
|
||||||
|
|
||||||
By default, new/deleted empty directories on one path are _not_ propagated to the other side.
|
By default, new/deleted empty directories on one path are _not_ propagated to the other side.
|
||||||
|
@ -538,11 +561,33 @@ is to rename it to the same name on both sides. (As of `rclone v1.64`,
|
||||||
a `--resync` is no longer required after doing so, as bisync will automatically
|
a `--resync` is no longer required after doing so, as bisync will automatically
|
||||||
detect that Path1 and Path2 are in agreement.)
|
detect that Path1 and Path2 are in agreement.)
|
||||||
|
|
||||||
|
### `--fast-list` used by default
|
||||||
|
|
||||||
|
Unlike most other rclone commands, bisync uses [`--fast-list`](/docs/#fast-list) by default,
|
||||||
|
for backends that support it. In many cases this is desirable, however,
|
||||||
|
there are some scenarios in which bisync could be faster *without* `--fast-list`,
|
||||||
|
and there is also a [known issue concerning Google Drive users with many empty directories](https://github.com/rclone/rclone/commit/cbf3d4356135814921382dd3285d859d15d0aa77).
|
||||||
|
For now, the recommended way to avoid using `--fast-list` is to add `--disable ListR`
|
||||||
|
to all bisync commands. The default behavior may change in a future version.
|
||||||
|
|
||||||
|
### Overridden Configs
|
||||||
|
|
||||||
|
When rclone detects an overridden config, it adds a suffix like `{ABCDE}` on the fly
|
||||||
|
to the internal name of the remote. Bisync follows suit by including this suffix in its listing filenames.
|
||||||
|
However, this suffix does not necessarily persist from run to run, especially if different flags are provided.
|
||||||
|
So if next time the suffix assigned is `{FGHIJ}`, bisync will get confused,
|
||||||
|
because it's looking for a listing file with `{FGHIJ}`, when the file it wants has `{ABCDE}`.
|
||||||
|
As a result, it throws
|
||||||
|
`Bisync critical error: cannot find prior Path1 or Path2 listings, likely due to critical error on prior run`
|
||||||
|
and refuses to run again until the user runs a `--resync` (unless using `--resilient`).
|
||||||
|
The best workaround at the moment is to set any backend-specific flags in the [config file](/commands/rclone_config/)
|
||||||
|
instead of specifying them with command flags. (You can still override them as needed for other rclone commands.)
|
||||||
|
|
||||||
### Case sensitivity
|
### Case sensitivity
|
||||||
|
|
||||||
Synching with **case-insensitive** filesystems, such as Windows or `Box`,
|
Synching with **case-insensitive** filesystems, such as Windows or `Box`,
|
||||||
can result in file name conflicts. This will be fixed in a future release.
|
can result in file name conflicts. This will be fixed in a future release.
|
||||||
The near term workaround is to make sure that files on both sides
|
The near-term workaround is to make sure that files on both sides
|
||||||
don't have spelling case differences (`Smile.jpg` vs. `smile.jpg`).
|
don't have spelling case differences (`Smile.jpg` vs. `smile.jpg`).
|
||||||
|
|
||||||
## Windows support {#windows}
|
## Windows support {#windows}
|
||||||
|
@ -605,7 +650,7 @@ below.
|
||||||
- Excluding such dirs first will make rclone operations (much) faster.
|
- Excluding such dirs first will make rclone operations (much) faster.
|
||||||
- Specific files may also be excluded, as with the Dropbox exclusions
|
- Specific files may also be excluded, as with the Dropbox exclusions
|
||||||
example below.
|
example below.
|
||||||
2. Decide if its easier (or cleaner) to:
|
2. Decide if it's easier (or cleaner) to:
|
||||||
- Include select directories and therefore _exclude everything else_ -- or --
|
- Include select directories and therefore _exclude everything else_ -- or --
|
||||||
- Exclude select directories and therefore _include everything else_
|
- Exclude select directories and therefore _include everything else_
|
||||||
3. Include select directories:
|
3. Include select directories:
|
||||||
|
@ -624,7 +669,7 @@ below.
|
||||||
For example: `-/Desktop/tempfiles/`, or `- /testdir/`.
|
For example: `-/Desktop/tempfiles/`, or `- /testdir/`.
|
||||||
Again, a `**` on the end is not necessary.
|
Again, a `**` on the end is not necessary.
|
||||||
- Do _not_ add a `- **` in the file. Without this line, everything
|
- Do _not_ add a `- **` in the file. Without this line, everything
|
||||||
will be included that has not be explicitly excluded.
|
will be included that has not been explicitly excluded.
|
||||||
- Disregard step 3.
|
- Disregard step 3.
|
||||||
|
|
||||||
A few rules for the syntax of a filter file expanding on
|
A few rules for the syntax of a filter file expanding on
|
||||||
|
@ -768,7 +813,7 @@ The second has no deltas between local and remote.
|
||||||
The `--dry-run` messages may indicate that it would try to delete some files.
|
The `--dry-run` messages may indicate that it would try to delete some files.
|
||||||
For example, if a file is new on Path2 and does not exist on Path1 then
|
For example, if a file is new on Path2 and does not exist on Path1 then
|
||||||
it would normally be copied to Path1, but with `--dry-run` enabled those
|
it would normally be copied to Path1, but with `--dry-run` enabled those
|
||||||
copies don't happen, which leads to the attempted delete on the Path2,
|
copies don't happen, which leads to the attempted delete on Path2,
|
||||||
blocked again by --dry-run: `... Not deleting as --dry-run`.
|
blocked again by --dry-run: `... Not deleting as --dry-run`.
|
||||||
|
|
||||||
This whole confusing situation is an artifact of the `--dry-run` flag.
|
This whole confusing situation is an artifact of the `--dry-run` flag.
|
||||||
|
@ -777,14 +822,14 @@ copied to Path1 then the threatened deletes on Path2 may be disregarded.
|
||||||
|
|
||||||
### Retries
|
### Retries
|
||||||
|
|
||||||
Rclone has built in retries. If you run with `--verbose` you'll see
|
Rclone has built-in retries. If you run with `--verbose` you'll see
|
||||||
error and retry messages such as shown below. This is usually not a bug.
|
error and retry messages such as shown below. This is usually not a bug.
|
||||||
If at the end of the run you see `Bisync successful` and not
|
If at the end of the run, you see `Bisync successful` and not
|
||||||
`Bisync critical error` or `Bisync aborted` then the run was successful,
|
`Bisync critical error` or `Bisync aborted` then the run was successful,
|
||||||
and you can ignore the error messages.
|
and you can ignore the error messages.
|
||||||
|
|
||||||
The following run shows an intermittent fail. Lines _5_ and _6- are
|
The following run shows an intermittent fail. Lines _5_ and _6- are
|
||||||
low level messages. Line _6_ is a bubbled-up _warning_ message, conveying
|
low-level messages. Line _6_ is a bubbled-up _warning_ message, conveying
|
||||||
the error. Rclone normally retries failing commands, so there may be
|
the error. Rclone normally retries failing commands, so there may be
|
||||||
numerous such messages in the log.
|
numerous such messages in the log.
|
||||||
|
|
||||||
|
@ -864,7 +909,7 @@ and an OwnCloud server, with output logged to a runlog file:
|
||||||
*/5 * * * * /path/to/rclone bisync /local/files MyCloud: --check-access --filters-file /path/to/bysync-filters.txt --log-file /path/to//bisync.log
|
*/5 * * * * /path/to/rclone bisync /local/files MyCloud: --check-access --filters-file /path/to/bysync-filters.txt --log-file /path/to//bisync.log
|
||||||
```
|
```
|
||||||
|
|
||||||
See [crontab syntax](https://www.man7.org/linux/man-pages/man1/crontab.1p.html#INPUT_FILES)).
|
See [crontab syntax](https://www.man7.org/linux/man-pages/man1/crontab.1p.html#INPUT_FILES)
|
||||||
for the details of crontab time interval expressions.
|
for the details of crontab time interval expressions.
|
||||||
|
|
||||||
If you run `rclone bisync` as a cron job, redirect stdout/stderr to a file.
|
If you run `rclone bisync` as a cron job, redirect stdout/stderr to a file.
|
||||||
|
@ -1056,7 +1101,7 @@ test command flags can be equally prefixed by a single `-` or double dash.
|
||||||
synched tree even if there are check file mismatches in the test tree.
|
synched tree even if there are check file mismatches in the test tree.
|
||||||
- Some Dropbox tests can fail, notably printing the following message:
|
- Some Dropbox tests can fail, notably printing the following message:
|
||||||
`src and dst identical but can't set mod time without deleting and re-uploading`
|
`src and dst identical but can't set mod time without deleting and re-uploading`
|
||||||
This is expected and happens due a way Dropbox handles modification times.
|
This is expected and happens due to the way Dropbox handles modification times.
|
||||||
You should use the `-refresh-times` test flag to make up for this.
|
You should use the `-refresh-times` test flag to make up for this.
|
||||||
- If Dropbox tests hit request limit for you and print error message
|
- If Dropbox tests hit request limit for you and print error message
|
||||||
`too_many_requests/...: Too many requests or write operations.`
|
`too_many_requests/...: Too many requests or write operations.`
|
||||||
|
@ -1209,7 +1254,7 @@ with [@cjnaz](https://github.com/cjnaz)'s full support and encouragement.
|
||||||
|
|
||||||
Bisync adopts the differential synchronization technique, which is
|
Bisync adopts the differential synchronization technique, which is
|
||||||
based on keeping history of changes performed by both synchronizing sides.
|
based on keeping history of changes performed by both synchronizing sides.
|
||||||
See the _Dual Shadow Method_ section in the
|
See the _Dual Shadow Method_ section in
|
||||||
[Neil Fraser's article](https://neil.fraser.name/writing/sync/).
|
[Neil Fraser's article](https://neil.fraser.name/writing/sync/).
|
||||||
|
|
||||||
Also note a number of academic publications by
|
Also note a number of academic publications by
|
||||||
|
@ -1233,3 +1278,4 @@ causing bisync to consider more files than necessary due to overbroad filters du
|
||||||
* Added [new `--ignore-listing-checksum` flag](https://forum.rclone.org/t/bisync-bugs-and-feature-requests/37636#:~:text=6.%20%2D%2Dignore%2Dchecksum%20should%20be%20split%20into%20two%20flags%20for%20separate%20purposes)
|
* Added [new `--ignore-listing-checksum` flag](https://forum.rclone.org/t/bisync-bugs-and-feature-requests/37636#:~:text=6.%20%2D%2Dignore%2Dchecksum%20should%20be%20split%20into%20two%20flags%20for%20separate%20purposes)
|
||||||
to distinguish from `--ignore-checksum`
|
to distinguish from `--ignore-checksum`
|
||||||
* [Performance improvements](https://forum.rclone.org/t/bisync-bugs-and-feature-requests/37636#:~:text=6.%20Deletes%20take%20several%20times%20longer%20than%20copies) for large remotes
|
* [Performance improvements](https://forum.rclone.org/t/bisync-bugs-and-feature-requests/37636#:~:text=6.%20Deletes%20take%20several%20times%20longer%20than%20copies) for large remotes
|
||||||
|
* Documentation and testing improvements
|
Loading…
Add table
Reference in a new issue