[prev in list] [next in list] [prev in thread] [next in thread]
List: cygwin
Subject: Wish list: Cygwin `mv` to move OneDrive files without downloading them
From: Adam Dinwoodie <adam () dinwoodie ! org>
Date: 2022-06-14 11:25:32
Message-ID: 20220614112532.7hgkmwm5boz7rqre () lucy ! dinwoodie ! org
[Download RAW message or body]
Microsoft OneDrive has a "Files On-Demand" function, where it will
synchronise file metadata to a local system, but won't actually download
the file content until an application attempts to read the content.
When moving a file within Cygwin using `mv`, the file always gets
downloaded, which seems like it shouldn't be necessary. Is there any
way to have `mv` (and presumably the underlying rename call) work
without downloading the file content in this circumstance? It'd
definitely make some of my life easier, but I'm not sure if it's a
trivial issue, one that would require years of work, or somwhere in
between...
As best I can tell, `mv` doesn't need to know the content of the file,
at least as long as it's not moving the file outside of OneDrive; it
feels very similar to me to moving a file within a partition on *nix:
generally it's just a case of updating the directory records, with no
need to look at the file content.
This does work as desired from within PowerShell: PowerShell's
`Move-Item` won't download a file that's not currently stored on the
local system. So it's presumably possible to achieve this, although I
don't know if it'd rely on non-public Microsoft APIs, and/or lots more
complexity in the Cygwin code.
Simple demonstration below, showing the different behaviours of
PowerShell versus Cygwin. I've not included a cygcheck.out, as I'm
pretty sure this is much closer to a feature request than a problem
report, but let me know if I've got that wrong.
PS C:\Users\adinwoodie\OneDrive> # Create a directory and some files to \
experiment with PS C:\Users\adinwoodie\OneDrive> New-Item -Type directory -Name temp
Directory: C:\Users\adinwoodie\OneDrive
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 14/06/2022 12:09 temp
PS C:\Users\adinwoodie\OneDrive> cd temp
PS C:\Users\adinwoodie\OneDrive\temp> New-Item -Type file -Name move-with-pwsh \
-Value "Some arbitrary file content"
Directory: C:\Users\adinwoodie\OneDrive\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 14/06/2022 12:10 27 move-with-pwsh
PS C:\Users\adinwoodie\OneDrive\temp> New-Item -Type file -Name move-with-cygwin \
-Value "Some arbitrary file content"
Directory: C:\Users\adinwoodie\OneDrive\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 14/06/2022 12:10 27 move-with-cygwin
PS C:\Users\adinwoodie\OneDrive\temp> # Look at the directory listing prior to \
recovering the disk space PS C:\Users\adinwoodie\OneDrive\temp> dir
Directory: C:\Users\adinwoodie\OneDrive\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 14/06/2022 12:10 27 move-with-cygwin
-a---l 14/06/2022 12:10 27 move-with-pwsh
PS C:\Users\adinwoodie\OneDrive\temp> # Mark the files as to be stored online and \
the local disk space to be recovered PS C:\Users\adinwoodie\OneDrive\temp> \
attrib.exe +O +U * PS C:\Users\adinwoodie\OneDrive\temp> # Check the disk space is \
now marked as recovered; note the brackets around the file length PS \
C:\Users\adinwoodie\OneDrive\temp> dir
Directory: C:\Users\adinwoodie\OneDrive\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 14/06/2022 12:10 (27) move-with-cygwin
-a---l 14/06/2022 12:10 (27) move-with-pwsh
PS C:\Users\adinwoodie\OneDrive\temp> # Move the files
PS C:\Users\adinwoodie\OneDrive\temp> Move-Item move-with-pwsh moved-with-pwsh
PS C:\Users\adinwoodie\OneDrive\temp> C:\cygwin64\bin\mv.exe move-with-cygwin \
moved-with-cygwin PS C:\Users\adinwoodie\OneDrive\temp> # Note the version moved \
with Cygwin is now consuming local disk space again, while the version moved with \
PowerShell doesn't PS C:\Users\adinwoodie\OneDrive\temp> dir
Directory: C:\Users\adinwoodie\OneDrive\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 14/06/2022 12:10 27 moved-with-cygwin
-a---l 14/06/2022 12:10 (27) moved-with-pwsh
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic