On Wednesday, 13 March 2024 at 21:21:21 UTC, Jonathan M Davis
wrote:
On Wednesday, March 13, 2024 3:03:30 PM MDT zoujiaqing via
Digitalmars-d-learn wrote:
upload file to server in docker, but upload directory volume
to host machine.
Exception error:
```
Invalid cross-device link
```
Have other function like move(a, b) ?
https://github.com/huntlabs/hunt-framework/blob/master/source/hunt/framework
/file/File.d#L102
Well, the subject of your post mentions std.file, and then you
link to a framework that does basically the same thing. So, I
don't know what you're actually using.
However, both of those functions use the OS function, rename,
which renames the file within a file system, but it can't move
files across file systems. Strictly speaking, it's not possible
to move a file across file systems. What a program like mv does
when the destination is on a different file system from the
source file is copy the file and then delete the original. So,
if you want to "move" a file across file systems within your
program, you'll have to do the same thing.
There may be a projcet on code.dlang.org which has a function
which tries to move the file within the file system and then
does a copy and remove instead if moving within the file system
doesn't work, but otherwise, you'll have to implement that
yourself, which could be as simple as catching the any
exceptions from move and then attempting to copy the file and
then remove it if an exception was thrown.
- Jonathan M Davis
this is bug in D.
Docker run app code:
```d
reanme("/tmp/aaa", "/data/attachments/aaa");
```
docker volume path:
```txt
VOLUME /data/attachments
```
docker compose yml:
```yml
volumes:
- /data/attachments:/data/attachments
```
Error exception:
```
Invalid cross-device link
```