This commit is contained in:
parent
af24798abd
commit
b9965126a1
1 changed files with 42 additions and 0 deletions
|
@ -0,0 +1,42 @@
|
||||||
|
I'm using version `10.20230321-gb624394c7` on Arch Linux and BTRFS.
|
||||||
|
I'd love to have the directory special remote using `cp --reflink=auto` to export to a directory on the same file system.
|
||||||
|
|
||||||
|
My use case is using syncthing as a way to export (parts of my repo) to my phone.
|
||||||
|
I'm deliberately not using `adb` as this needs my phone to be connected to the computer somehow.
|
||||||
|
I basically want to do what's described on [syncthing special remote](/todo/syncthing_special_remote/#index2h2) under “Copying objects”.
|
||||||
|
|
||||||
|
The main drawback, as also noted in the linked document, is that all files are duplicated.
|
||||||
|
As I'm using BTRFS it would really help if the `export` were to use `cp --reflink=auto` instead of its own copying mechanism.
|
||||||
|
I've read [here](/forum/Use_reflinks_on_BTRFS_instead_of_symlinks___63__/) that you suggested (albeit 7 years ago) using a shared clone instead.
|
||||||
|
However, this does not work for me as syncthing does not synchronize symlinks to Android (they are ignored even if they point to something).
|
||||||
|
(Trying with a shared repo and `adjust --unlock-present` gives merge problems when dropping files from the directory.)
|
||||||
|
|
||||||
|
Nearly two years ago, you wrote [here](/todo/import_from_directory_does_not_use_cp_--reflink__63___/) that you “Implemented CoW for directory special remote, comprehensively”.
|
||||||
|
It seems to me that this is only true for importing files which, as I checked, actually uses cow.
|
||||||
|
|
||||||
|
Since I want to manage relatively many files of decent size (music, audio books, pictures, videos / movies) it would be much better if the tree export would also use reflink.
|
||||||
|
Maybe having this as an option, for the cost of not having a nice progress bar, would be something worth considering.
|
||||||
|
|
||||||
|
A test script to show that an export does indeed use cow is the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir export import
|
||||||
|
git init repo
|
||||||
|
cd repo
|
||||||
|
git annex init
|
||||||
|
git annex initremote import type=directory directory=../import encryption=none importtree=yes
|
||||||
|
git annex initremote export type=directory directory=../export encryption=none exporttree=yes
|
||||||
|
git config remote.import.annex-tracking-branch main
|
||||||
|
git config remote.export.annex-tracking-branch main
|
||||||
|
|
||||||
|
for i in {1..100}; do
|
||||||
|
dd if=/dev/urandom bs=1M count=10 of=../import/file$i
|
||||||
|
done
|
||||||
|
|
||||||
|
git annex sync --content
|
||||||
|
```
|
||||||
|
After running, a `btrfs filesystem du ...` tells me that the `repo` and `import` files point to the same file, whereas `export` does not.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
In general: Thank you so much for this wonderful piece of software, I'm using it for years now and manage virtually everything with it (audio, video, pictures, important documents, papers, …).
|
Loading…
Add table
Add a link
Reference in a new issue