harababurel / gcsf Goto Github PK
View Code? Open in Web Editor NEWa FUSE file system based on Google Drive
License: MIT License
a FUSE file system based on Google Drive
License: MIT License
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:275:13
|
275 | FileId::Inode(inode) => self.node_ids.contains_key(&inode),
| ^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: `&FileId::Inode(inode)`
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:276:13
|
276 | FileId::DriveId(drive_id) => self.drive_ids.contains_key(drive_id),
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: `&FileId::DriveId(drive_id)`
Toolchain installed:
$ rustc --version
rustc 1.25.0 (84203cac6 2018-03-25)
$ cargo --version
cargo 0.26.0 (41480f5cc 2018-02-26)
First, thank you very much for this awesome project. I don't know if it's a Docker mounting error or a gcsf error with encrypted filenames. Don't blame me for doing crazy stuff here :D
I use a Docker container with gcsf installed and mount a host directory into the container. Then I mount the google drive folder via gcsf like described in the docs. I can create successfully an encrypted folder (e.g. ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGy83GFz4yGEAiKGAxkyBL4k--
) and it is synced to Google Drive.
But I can't create an encrypted file (e.g. ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGFZOUXF5.ijMuVpWlW9cgCE--
). If I use touch test.txt
I get the error touch: cannot touch 'test.txt': Function not implemented
. vim
can't also create/write the file. Any idea if it is gcsf related or not? Maybe someone can test it without Docker?
I can't see any special in the gcsf logs:
DEBUG gcsf::gcsf::filesystem > Could not perform sync: Not enough time has passed since last sync. Will do nothing.
DEBUG fuse::request > RELEASEDIR(1002) ino 0x0000000000000008, fh 0, flags 0x18800, release flags 0x0, lock owner 0
DEBUG fuse::request > LOOKUP(1003) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGFZOUXF5.ijMuVpWlW9cgCE--"
DEBUG fuse::request > MKNOD(1004) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGFZOUXF5.ijMuVpWlW9cgCE--", mode 0o100644, rdev 0
DEBUG fuse::request > LOOKUP(1005) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGFZOUXF5.ijMuVpWlW9cgCE--"
DEBUG fuse::request > LOOKUP(1006) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGFZOUXF5.ijMuVpWlW9cgCE--"
DEBUG fuse::request > MKNOD(1007) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGFZOUXF5.ijMuVpWlW9cgCE--", mode 0o100644, rdev 0
DEBUG fuse::request > LOOKUP(1008) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGFZOUXF5.ijMuVpWlW9cgCE--"
DEBUG fuse::request > LOOKUP(1009) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGeE4I73bXfaSp04mOrrYE2U--"
DEBUG fuse::request > LOOKUP(1010) parent 0x0000000000000008, name "ECRYPTFS_FNEK_ENCRYPTED.FWajKz29vL--AkZjsw01mylGaO1nGCzLS3XGeE4I73bXfaSp04mOrrYE2U--"
The Dockerfile looks like:
FROM base/archlinux
RUN pacman -Sy --noconfirm pkg-config rust gcc fuse2 \
&& mkdir -p /opt \
&& cargo -v install --root /opt gcsf \
&& echo "user_allow_other" >> /etc/fuse.conf \
&& pacman -Rs --noconfirm rust gcc \
&& pacman -Scc --noconfirm
ENTRYPOINT ["/opt/bin/gcsf"]
The special Docker mount options is --mount=type=bind,source="$HOME/data/googledrive",target="$HOME/data/googledrive",bind-propagation=shared --device=/dev/fuse
. The bind-propagation=shared
option must be used, otherwise I don't see the mounted files from fuse inside the Docker container on my host system.
Intended behavior:
trashed = true
on Drive.unlink
) from any directory mark it as trashed.rename
) from any directory to Trash should mark it as trashed (f273d25).unlink
) from Trash should delete it permanently (bd528c3, 11ebeb6)rename
) from Trash to anywhere else should mark the file as not trashed and possibly update its parent.rm -r
) should preserve the hierarchy of its content even when moved to TrashHey,
where could I find sources for this? Also any reason not to send patch to upstream?
#51 for reference
hello friend,
the config option for default_permissions seems to have no effect because chmod 755 is hardcoded in at least two files:
src/gcsf/file_manager.rs
src/gcsf/file.rs
Would be nice if we can handle this only via the config file :)
thanks
File size is not a well defined concept for special Drive documents (Docs, Sheets, Slides) because it depends on the export format. For such documents, GCSF should report the corresponding file size they would have when exported with the default MIME type.
One way of achieving this is by exporting each document at mount time in order to obtain its real size. This is incredibly slow. For the moment, GCSF reports the maximum file size (10 MB) for all special documents.
GCSF populates the file tree at mount time, making O(tree depth)
requests to Drive (one request for each level). This can be reduced to O(1)
but requires a better strategy for constructing the tree internally.
After authorizing gcsf and being redirected to http://localhost:8081 i get connection refused. I did
netstat -tulpn | grep LISTEN
but couldn't see port 8081 being used. Is the server that is supposed to handle the redirect not started correctly?
I have several directories in my Google Drive, and I would like to mount just few of them.
Can I do this? If not, I would be interested in implementing it. (I desperately need this feature)
I get following error once my (bigger than 100GB) drive is mounted.
From the error message I gather that gcsf is trying to download a Google Docs file,
which seems to be not supported by the Google Drive API (?).
ERROR gcsf::gcsf::drive_facade > Got error: ErrorMessage { msg: "BadRequest(\n ErrorResponse {\n error: ServerError {\n errors: [\n ServerMessage {\n domain: \"global\",\n reason: \"fileNotDownloadable\",\n message: \"Only files with binary content can be downloaded. Use Export with Google Docs files.\",\n location_type: Some(\n \"parameter\"\n ),\n location: Some(\n \"alt\"\n )\n }\n ],\n code: 403,\n message: \"Only files with binary content can be downloaded. Use Export with Google Docs files.\"\n }\n }\n)" }
As the error message does not mention which file it can not download I am unsure what it tried to get from the server.
it might be some saved google Maps, which google-drive-ocamlfuse seems to create a .desktop file form (on Ubuntu).
E.g. following file was created for me from some saved routes on my google drive:
Travel.desktop
[Desktop Entry]
Type=Link
Name=Route to XXX
URL=https://www.google.com/maps/d/drive?state=%7B%22ids%22:%5B%221lmT28FWMBaCOobleYNrbGMYtTZ0%22%5D,%22action%22:%22open%22,%22userId%22:someNumbersWhichMightBeMyUserId%22%7D
Thank you for your work.
I can't access a brower on the server I'm trying to authenticate.
Hence I have tried to copypaste the link:
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/drive&redirect_uri=http://localhost:8081&response_type=code&clien...
to my desktop and pasting the answer starting with:
code=4/yADuHTvSsLq2f_W_...
In to a textfile as described: "$HOME/.config/gcsf/some_session_name"
However Mounting fails with:
INFO gcsf > Creating and populating file system... thread 'main' panicked at 'called
Result::unwrap()on an
Errvalue: Custom { kind: InvalidData, error: Error("expected value", line: 1, column: 1) }', libcore/result.rs:1009:5 note: Run with
RUST_BACKTRACE=1 for a backtrace.
How do you authenticate on a server that you don't have browser access to?
Else please give me an example file how the session name file should look like.
Thanks!
When running cargo install gcsf --verbose
I get the following output:
Compiling gcsf v0.1.7
Running `rustc --crate-name gcsf .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/lib.rs --crate-type lib --emit=dep-info,link -C opt-level=3 -C metadata=506a9cd05f9eeacf -C extra-filename=-506a9cd05f9eeacf --out-dir /tmp/cargo-install.xyB2tnEem7E9/release/deps -L dependency=/tmp/cargo-install.xyB2tnEem7E9/release/deps --extern serde=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libserde-83d40da977452be1.rlib --extern id_tree=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libid_tree-5ab22dd4b3935017.rlib --extern serde_json=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libserde_json-c936d07379aa12ec.rlib --extern time=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libtime-d9cf4d14b5820b98.rlib --extern mime_sniffer=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libmime_sniffer-9ea93df407c81500.rlib --extern fuse=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libfuse-1892d0144fb018f4.rlib --extern failure=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libfailure-896e078218a313fd.rlib --extern hyper=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libhyper-186a78270cfba44e.rlib --extern clap=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libclap-c9a69a594362058f.rlib --extern config=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libconfig-231b35fd41c6fd48.rlib --extern xdg=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libxdg-588509338b04a846.rlib --extern serde_derive=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libserde_derive-2a7ccfd3e3c86dec.so --extern pretty_env_logger=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libpretty_env_logger-0adc6736911f4a1a.rlib --extern google_drive3_fork=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libgoogle_drive3_fork-26d8a8c503eec870.rlib --extern chrono=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libchrono-b5aff87669060bcc.rlib --extern lazy_static=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblazy_static-f82cd9b68e35bbb3.rlib --extern yup_oauth2=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libyup_oauth2-0b4a5f1929aa14f4.rlib --extern libc=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblibc-c0d6e05fb4949aeb.rlib --extern hyper_rustls=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libhyper_rustls-0fa211422f23d1d3.rlib --extern ctrlc=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libctrlc-ae00b40c060a0aa1.rlib --extern rand=/tmp/cargo-install.xyB2tnEem7E9/release/deps/librand-41f56cbf7866346e.rlib --extern itertools=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libitertools-cd00ad4eef8a6d6f.rlib --extern lru_time_cache=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblru_time_cache-85e1b495d45f512e.rlib --extern log=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblog-224aa7d8aa66a0d7.rlib --extern maplit=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libmaplit-618d65aa33f6dc96.rlib --cap-lints allow -L native=/tmp/cargo-install.xyB2tnEem7E9/release/build/backtrace-sys-904198f40ce3ddd5/out -L native=/usr/lib/x86_64-linux-gnu -L native=/tmp/cargo-install.xyB2tnEem7E9/release/build/ring-d64e300e6cf95def/out`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:275:13
|
275 | FileId::Inode(inode) => self.node_ids.contains_key(&inode),
| ^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:276:13
|
276 | FileId::DriveId(drive_id) => self.drive_ids.contains_key(drive_id),
| ^^^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:277:13
|
277 | FileId::NodeId(node_id) => self.tree.get(&node_id).is_ok(),
| ^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:278:18
|
278 | pn @ FileId::ParentAndName { .. } => self.get_file(&pn).is_some(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:276:70
|
276 | FileId::DriveId(drive_id) => self.drive_ids.contains_key(drive_id),
| ^^^^^^^^ expected reference, found struct `std::string::String`
|
= note: expected type `&_`
found type `std::string::String`
= help: try with `&drive_id`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:284:13
|
284 | FileId::Inode(inode) => self.node_ids.get(&inode).cloned(),
| ^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:285:13
|
285 | FileId::DriveId(drive_id) => self.get_node_id(&FileId::Inode(self.get_inode(
| ^^^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:288:13
|
288 | FileId::NodeId(node_id) => Some(node_id.clone()),
| ^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:289:22
|
289 | ref pn @ FileId::ParentAndName { .. } => {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:302:13
|
302 | FileId::Inode(inode) => Some(*inode),
| ^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:303:13
|
303 | FileId::DriveId(drive_id) => self.drive_ids.get(drive_id).cloned(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:304:13
|
304 | FileId::NodeId(node_id) => self.tree
| ^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:309:13
|
309 | / FileId::ParentAndName {
310 | | ref parent,
311 | | ref name,
312 | | } => self.get_children(&FileId::Inode(*parent))?
| |_____________^ expected reference, found enum `gcsf::file::FileId`
|
= note: expected type `&gcsf::file::FileId`
found type `gcsf::file::FileId`
error[E0614]: type `u64` cannot be dereferenced
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:302:42
|
302 | FileId::Inode(inode) => Some(*inode),
| ^^^^^^
error[E0308]: mismatched types
--> .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/gcsf/file_manager.rs:303:61
|
303 | FileId::DriveId(drive_id) => self.drive_ids.get(drive_id).cloned(),
| ^^^^^^^^ expected reference, found struct `std::string::String`
|
= note: expected type `&_`
found type `std::string::String`
= help: try with `&drive_id`
error: aborting due to 15 previous errors
error: failed to compile `gcsf v0.1.7`, intermediate artifacts can be found at `/tmp/cargo-install.xyB2tnEem7E9`
Caused by:
Could not compile `gcsf`.
Caused by:
process didn't exit successfully: `rustc --crate-name gcsf .cargo/registry/src/github.com-1ecc6299db9ec823/gcsf-0.1.7/src/lib.rs --crate-type lib --emit=dep-info,link -C opt-level=3 -C metadata=506a9cd05f9eeacf -C extra-filename=-506a9cd05f9eeacf --out-dir /tmp/cargo-install.xyB2tnEem7E9/release/deps -L dependency=/tmp/cargo-install.xyB2tnEem7E9/release/deps --extern serde=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libserde-83d40da977452be1.rlib --extern id_tree=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libid_tree-5ab22dd4b3935017.rlib --extern serde_json=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libserde_json-c936d07379aa12ec.rlib --extern time=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libtime-d9cf4d14b5820b98.rlib --extern mime_sniffer=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libmime_sniffer-9ea93df407c81500.rlib --extern fuse=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libfuse-1892d0144fb018f4.rlib --extern failure=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libfailure-896e078218a313fd.rlib --extern hyper=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libhyper-186a78270cfba44e.rlib --extern clap=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libclap-c9a69a594362058f.rlib --extern config=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libconfig-231b35fd41c6fd48.rlib --extern xdg=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libxdg-588509338b04a846.rlib --extern serde_derive=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libserde_derive-2a7ccfd3e3c86dec.so --extern pretty_env_logger=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libpretty_env_logger-0adc6736911f4a1a.rlib --extern google_drive3_fork=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libgoogle_drive3_fork-26d8a8c503eec870.rlib --extern chrono=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libchrono-b5aff87669060bcc.rlib --extern lazy_static=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblazy_static-f82cd9b68e35bbb3.rlib --extern yup_oauth2=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libyup_oauth2-0b4a5f1929aa14f4.rlib --extern libc=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblibc-c0d6e05fb4949aeb.rlib --extern hyper_rustls=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libhyper_rustls-0fa211422f23d1d3.rlib --extern ctrlc=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libctrlc-ae00b40c060a0aa1.rlib --extern rand=/tmp/cargo-install.xyB2tnEem7E9/release/deps/librand-41f56cbf7866346e.rlib --extern itertools=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libitertools-cd00ad4eef8a6d6f.rlib --extern lru_time_cache=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblru_time_cache-85e1b495d45f512e.rlib --extern log=/tmp/cargo-install.xyB2tnEem7E9/release/deps/liblog-224aa7d8aa66a0d7.rlib --extern maplit=/tmp/cargo-install.xyB2tnEem7E9/release/deps/libmaplit-618d65aa33f6dc96.rlib --cap-lints allow -L native=/tmp/cargo-install.xyB2tnEem7E9/release/build/backtrace-sys-904198f40ce3ddd5/out -L native=/usr/lib/x86_64-linux-gnu -L native=/tmp/cargo-install.xyB2tnEem7E9/release/build/ring-d64e300e6cf95def/out` (exit code: 101)
This is on an Ubuntu 18.04 machine with cargo 0.23.0 (61fa02415 2017-11-22).
I have ~7200 files in my drive and noticed that with GCSF mount, there are less shown. When looking further I noticed, that every mount the file count changes - even if my gdrive didnt change:
INFO gcsf > Creating and populating file system...
DEBUG gcsf::gcsf::drive_facade > DriveFacade::new()
INFO gcsf::gcsf::drive_facade > Received page 1 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 2 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 3 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 4 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 5 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 6 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 7 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 8 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 9 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 10 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 11 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 12 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 13 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 14 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 15 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 16 containing 224 files
INFO gcsf::gcsf::drive_facade > Received page 1 containing 5 files
INFO gcsf > File sytem created.
INFO gcsf > Mounting to /home/ttl/gdrive
INFO fuse::session > Mounting /home/ttl/gdrive
The mounting procedure every times shows the correct file count, when summarizing the reported file counts per page- Directly after each mounting I checked file/folder count:
find /home/ttl/gdrive | wc -l
5827
find /home/ttl/gdrive | wc -l
6099
find /home/ttl/gdrive | wc -l
6225
find /home/ttl/gdrive | wc -l
6136
there dont seem to be a fixed limit or something, because the shown file-count changes on every mount.
I looked into the code to find out whats happening and just added a counter in the populate() function - which is reporting the correct file count. The problem must be deeper inside, where my experience is too low
please help :)
Current gcsf tarball on crates.io contains a lot of useless files like:
-rw-r--r-- 1000/100 336 2018-05-24 21:24 gcsf-0.1.15/.idea/gcsf.iml
-rw-r--r-- 1000/100 409 2018-05-24 21:27 gcsf-0.1.15/.idea/misc.xml
-rw-r--r-- 1000/100 260 2018-05-24 21:24 gcsf-0.1.15/.idea/modules.xml
-rw-r--r-- 1000/100 167 2018-05-24 21:24 gcsf-0.1.15/.idea/vcs.xml
-rw-r--r-- 1000/100 16099 2018-06-26 13:47 gcsf-0.1.15/.idea/workspace.xml
-rw-r--r-- 1000/100 0 2018-06-12 17:56 gcsf-0.1.15/cargo-count.dot
-rw-r--r-- 1000/100 228314 2018-06-12 18:06 gcsf-0.1.15/class_diagram.png
-rw-r--r-- 1000/100 434 2018-03-28 20:25 gcsf-0.1.15/client_secret.json
-rw-r--r-- 1000/100 82233 2018-06-21 17:22 gcsf-0.1.15/gcsf_class_diagram.mdj
-rw-r--r-- 1000/100 1202126 2018-06-12 17:55 gcsf-0.1.15/rainbow-graph.png
-rwxr-xr-x 1000/100 365 2018-06-05 11:22 gcsf-0.1.15/run
-rwxr-xr-x 1000/100 219 2018-05-31 12:33 gcsf-0.1.15/run_release
-rwxr-xr-x 1000/100 49 2018-06-14 13:09 gcsf-0.1.15/timer
Please republish new version without them. Also you would probably want to change your client-secret ;)
How can we update our current gcsf?
I see many new commits in this repo.
Should we compile it all over again to have the recent improvements?
Sorry I am noob btw
After authenticating with google I get following error.
INFO gcsf > Creating and populating file system...
ERROR gcsf::gcsf::file_manager > Could not populate filesystem: Failure(
Response {
status: PayloadTooLarge,
headers: Headers { Content-Type: text/html; charset=UTF-8
, Referrer-Policy: no-referrer
, Content-Length: 2398
, Date: Tue, 03 Jul 2018 06:40:04 GMT
, },
version: Http10,
url: "https://www.googleapis.com/drive/v3/files?spaces=drive&q=%28%271
...LONG_AND_POSSIBLY_SENSITIVE_URLS_...
&alt=json",
status_raw: RawStatus(
413,
"Request Entity Too Large"
),
message: Http11Message {
is_proxied: false,
method: None,
stream: Wrapper {
obj: Some(
Reading(
SizedReader(remaining=0)
)
)
}
}
}
)
INFO gcsf > File sytem created.
INFO gcsf > Mounting to /media/user/googledrive/
INFO gcsf > Mounted to /media/user/googledrive/
Possibly related to this: when I look in to the mounted directory it seems like all files up to the "first" level are there, but files in the second subdirectories are not:
GOOGLEDRIVE/A/FILE1 is there
GOOGLEDRIVE/A/B/FILE2 is missing
Note: I have a paid Googledrive subscription of 100GB, which is almost full.
When running gcsf mount /mnt/drive-personal
I get the output below. The account is a G Suite account, maybe that matters. This is from the master branch installed via the AUR package.
After clicking the link it also took about 10+ seconds before I got the output. It would be nice if I got some confirmation that the authorisation was completed.
Note: I've redacted the huge URL in the response just in case.
INFO gcsf > Creating and populating file system...
Please direct your browser to https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/drive&redirect_uri=http://localhost:8081&response_type=code&client_id=726003905312-e2mq9mesjc5llclmvc04ef1k7qopv9tu.apps.googleusercontent.com and follow the instructions displayed there.
ERROR gcsf::gcsf::file_manager > Could not populate filesystem: Failure(
Response {
status: BadRequest,
headers: Headers { Date: Mon, 02 Jul 2018 22:41:49 GMT
, Content-Type: text/html; charset=UTF-8
, Alt-Svc: quic=":443"; ma=2592000; v="43,42,41,39,35"
, Transfer-Encoding: chunked
, },
version: Http11,
url: "https://www.googleapis.com/drive/v3/files?redacted",
status_raw: RawStatus(
400,
"Bad Request"
),
message: Http11Message {
is_proxied: false,
method: None,
stream: Wrapper {
obj: Some(
Reading(
ChunkedReader(chunk_remaining=0)
)
)
}
}
}
)
INFO gcsf > File sytem created.
INFO gcsf > Mounting to /mnt/drive-personal
INFO gcsf > Mounted to /mnt/drive-personal
^C INFO gcsf > Ctrl-C detected
Hi, I'm using gcsf latest release (0.1.21) build from AUR on Arch, and when executing:
gcsf login <my_session_name>
And get authenticated by google, I don't get the expected:
~/.config/gcsf/<my_session_name>
And besides:
gcsf list
Returns:
No sessions found.
After authenticating through google I get on the browser:
You may now close this window.
Currently, I have to open up a terminal and start gcsf which stays in the foreground. I thought that I could write a script to test if there was internet connectivity and if so, automount the google drive. That does not work, and I am still forces to manually start an instance.
Am I doing something wrong with my script (I have also tried to use .zprofile as well, and it doesn't work either) or is this an issue native to using fuse?
GCSF exports special documents (Docs, Sheets, Slides) using the OpenDocument format. Users should be able to specify any MIME type supported by Drive.
First time user here and pretty cool app.
I had problems creating a new session because I had to use default settings in my laptop's connection to create this session. I just using cloudflare's dns - 1.1.1.1 and 1.0.0.1.
Is this happening because of google of the application?
Out of curiosity, does this take up local storage when mounted? If it does, is there a way to have some type of selective directories?
This might help? https://stackoverflow.com/questions/15685335/google-drive-files-list-500-error
ERROR gcsf::gcsf::filesystem > create: BadRequest(
ErrorResponse {
error: ServerError {
errors: [
ServerMessage {
domain: "global",
reason: "internalError",
message: "Internal Error",
location_type: None,
location: None
}
],
code: 500,
message: "Internal Error"
}
}
)
Fails on my Linux machine:
error: failed to run custom build command for fuse v0.3.1
process didn't exit successfully: /tmp/user/1000/cargo-installMwV918/release/build/fuse-f0fb0e86cb51e215/build-script-build
(exit code: 101)
--- stderr
thread 'main' panicked at 'called Result::unwrap()
on an Err
value: Failure { command: ""pkg-config" "--libs" "--cflags" "fuse >= 2.6.0"", output: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "Package fuse was not found in the pkg-config search path.\nPerhaps you should add the directory containing fuse.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'fuse\' found\n" } }', libcore/result.rs:945:5 note: Run with
RUST_BACKTRACE=1` for a backtrace.
warning: build failed, waiting for other jobs to finish...
Please add an explanation what "GCSF" stands for to the readme.
From Hacker News:
GCSF stands for "Google Conduce Sistem de Fișiere" -- a (bad) word-by-word Romanian translation of "Google Drive File System".
If there is no internet connection, GCSF fails to populate the file system which results in the mountpoint containing nothing but an empty "Shared with me" directory.
GCSF should fail early in this case, to make it clear that mounting failed. This will also help systemd detect the process death and restart it accordingly.
Google suggests enabling gzip
compression before transferring files over the network:
In order to receive a gzip-encoded response you must do two things: Set an
Accept-Encoding
header, and modify your user agent to contain the string gzip. Here is an example of properly formed HTTP headers for enabling gzip compression:
Accept-Encoding: gzip
User-Agent: my program (gzip)
Find a way to enable this option in GCSF.
Hello there,
I'm having issues trying to install gcsf on Ubuntu 18.04. Some minutes after run cargo install gcsf I'm getting error messages likes these:
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:302:13
|
302 | FileId::Inode(inode) => Some(*inode),
| ^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::Inode(inode)
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:303:13
|
303 | FileId::DriveId(drive_id) => self.drive_ids.get(drive_id).cloned(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::DriveId(drive_id)
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:304:13
|
304 | FileId::NodeId(node_id) => self.tree
| ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::NodeId(node_id)
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
cargo -V cargo 0.26.0
rustc -V rustc 1.25.0
Thanks in advance!
Hello,
I had problems with gocryptfs, the diriv files got renamed(attached number, maybe while gocryptfs tried to edit the file) and also with securefs, which is not usable at all with GCSF
Maybe there is a special GCSF config needed? Please help :)
The problem with gocryptfs is described here:
rfjakob/gocryptfs#275
kind regards
Hi!
I'm running Ubuntu 18.04 and got that error after
~$ cargo install gcsf
Compiling thread_local v0.3.5
error: failed to run custom build command for `fuse v0.3.1`
process didn't exit successfully: `/tmp/cargo-installb4gh87/release/build/fuse-516b54e73b854707/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Command { command: "\"pkg-config\" \"--libs\" \"--cflags\" \"fuse >= 2.6.0\"", cause: Os { code: 2, kind: NotFound, message: "No such file or directory" } }', libcore/result.rs:945:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.
warning: build failed, waiting for other jobs to finish...
error: failed to compile `gcsf v0.1.7`, intermediate artifacts can be found at `/tmp/cargo-installb4gh87`
Caused by:
build failed
Any ideas? Thanks in advance
chmod
does not work because the setattr
method defined in the fuse
crate does not allow setting file permissions (AFAICT).
Find a way to add support for setting file attributes. Alternatively, look into the default_permissions
mount options.
I now have >100GB on my Google drive and gcsf is not able to handle such large drives in a practical manner.
It seems that gcsf is indexing the whole drive on startup, which takes quite some time for me.
google-drive-ocamlfuse does a on-needed based lookup of the files.
It would be great if gcsf could also handle such large drives in the future.
$ gcsf mount /mymountpoint/ -s mysession
INFO gcsf > Creating and populating file system...
INFO gcsf::gcsf::drive_facade > Received page 1 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 2 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 3 containing 460 files
... about 10 minutes later ..
INFO gcsf::gcsf::drive_facade > Received page 219 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 220 containing 125 file
INFO gcsf::gcsf::drive_facade > Received page 1 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 2 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 3 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 4 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 5 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 6 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 7 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 8 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 9 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 10 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 11 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 12 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 13 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 14 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 15 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 16 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 17 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 18 containing 460 files
INFO gcsf::gcsf::drive_facade > Received page 19 containing 258 files
INFO gcsf > File sytem created.
INFO gcsf > Mounting to /mymountpoint/
INFO gcsf > Mounted to /mymountpoint/
INFO gcsf::gcsf::file_manager > Checking for changes and possibly applying them.
...another 30 minutes or so later ...
INFO gcsf::gcsf::file_manager > Checking for changes and possibly applying them.
ERROR gcsf::gcsf::drive_facade > Got error: ErrorMessage { msg: "BadRequest(\n ErrorResponse {\n error: ServerError {\n errors: [\n ServerMessage {\n domain: \"global\",\n reason: \"fileNotDownloadable\",\n message: \"Only files with binary content can be downloaded. Use Export with Google Docs files.\",\n location_type: Some(\n \"parameter\"\n ),\n location: Some(\n \"alt\"\n )\n }\n ],\n code: 403,\n message: \"Only files with binary content can be downloaded. Use Export with Google Docs files.\"\n }\n }\n)" }
At this point I can finally see my files in the mount location.
This long start up duration is not practical for me and I hope that you find the time to improve the situation in the future.
Thanks for your efforts.
I don't think that anybody should use gcsf as a library (correct me if I'm wrong).
Can you please make sure that it is not treated as a lib? (probably by removing lib.rs)
While installing gcsf
using the cargo install gcsf
command, it fails with this error:
error[E0432]: unresolved import `libc::EREMOTEIO`
--> src/gcsf/filesystem.rs:7:29
|
7 | use libc::{ENOENT, ENOTDIR, EREMOTEIO};
| ^^^^^^^^^ no `EREMOTEIO` in the root. Did you mean to use `EREMOTE`?
I have rustc 1.27.0 and cargo 1.26.0 (installed via brew
) and osxfuse 3.8.0.
If it helps, I tried to look for this EREMOTEIO
constant in libc's documentation for macOS and it doesn't exist. But on Linux it does.
Hi @harababurel ,
I think that filesystem does not show the files, if the directory tree is too deep..
Below ls command should have to list many files and folders :)
Because directories upto a range do not have any problem:
What would you suggest, is there any possible fix for it?
Could this be used as a source for streaming software like Plex like similar projects; plexdrive,rclone,ocaml-fuse etc? Where file chunks are important to only caching/downloading the necessary pieces?
In order for users to be able to use this without manually mounting it, we need to add an entry to mount at the end of the ~/.profile file. This would make the program much more usable (by default).
Coming from the HN post it wasn't clear to me that Windows wasn't supported. Given that Rust is cross platform it might be a good idea to mention this somewhere in the README.md.
You mentioned supporting it:
Should be achievable using winfsp[0]. I will look into it for a future release.
[0] https://github.com/billziss-gh/winfsp
Possibly make an issue dedicated to it?
Cheers!
Mount team drives:
Is is possible to access team drives?
https://gsuite.google.com/learning-center/products/drive/get-started-team-drive/#!/
https://github.com/astrada/google-drive-ocamlfuse/wiki/Team-Drives
"cargo install gcsf" fails on Ubuntu 16.04 LTS:
error: failed to run custom build command for `fuse v0.3.1`
process didn't exit successfully: `/home/vizzy/tmp/kate/cargo-install.RjKoRWxyF4Kh/release/build/fuse-04be8b764fc091f0/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Failure { command: "\"pkg-config\" \"--libs\" \"--cflags\" \"fuse >= 2.6.0\"", output: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "Package fuse was not found in the pkg-config search path.\nPerhaps you should add the directory containing `fuse.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'fuse\' found\n" } }', src/libcore/result.rs:916:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.
dpkg -l *fuse*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=====================================-=======================-=======================-================================================================================
ii exfat-fuse 1.2.3-1 amd64 read and write exFAT driver for FUSE
ii fuse 2.9.4-1ubuntu3.1 amd64 Filesystem in Userspace
un fuse-module <none> <none> (no description available)
ii ifuse 1.1.2-0.1build3 amd64 FUSE module for iPhone and iPod Touch devices
ii libfuse2:amd64 2.9.4-1ubuntu3.1 amd64 Filesystem in Userspace (library)
un python-llfuse-doc <none> <none> (no description available)
ii python3-llfuse 0.41.1+dfsg-4build1 amd64 Python 3 bindings for the low-level FUSE API
un python3.5-llfuse <none> <none> (no description available)
Any ideas?
Hi,
I'm getting this error when i'm trying to mount
andrei@local ~/Documents $ gcsf mount /Users/andrei/Documents/gcsf
INFO gcsf > Creating and populating file system...
Please direct your browser to <url_for_google_auth> and follow the instructions displayed there.
INFO gcsf > File sytem created.
INFO gcsf > Mounting to /Users/andrei/Documents/gcsf
fuse: attempt to remount on active mount point: /Users/andrei/Documents/gcsf ERROR gcsf > Could not mount to /Users/andrei/Documents/gcsf: Undefined error: 0 (os error 0)
Hi,
I was trying to build gcsf and ran into the following error:
Updating registry `https://github.com/rust-lang/crates.io-index`
Downloading gcsf v0.1.7
Installing gcsf v0.1.7
Downloading id_tree v1.3.0
Downloading serde_json v1.0.22
Downloading rand v0.4.2
Downloading google-drive3-fork v1.0.10
Downloading mime-sniffer v0.1.2
Downloading itertools v0.7.8
Downloading ctrlc v3.1.1
Downloading hyper-rustls v0.6.1
Downloading failure v0.1.1
Downloading serde v1.0.69
Downloading fuse v0.3.1
Downloading pretty_env_logger v0.2.3
Downloading maplit v1.0.1
Downloading log v0.4.3
Downloading config v0.8.0
Downloading lazy_static v1.0.1
Downloading yup-oauth2 v1.0.7
Downloading libc v0.2.42
Downloading clap v2.32.0
Downloading hyper v0.10.13
Downloading time v0.1.40
Downloading xdg v2.1.0
Downloading lru_time_cache v0.8.0
Downloading chrono v0.4.4
Downloading serde_derive v1.0.69
Downloading snowflake v1.3.0
Downloading itoa v0.4.1
Downloading dtoa v0.4.2
Downloading url v0.5.10
Downloading mime v0.2.6
Downloading quote v0.6.3
Downloading syn v0.14.4
Downloading proc-macro2 v0.4.6
Downloading unicode-xid v0.1.0
Downloading log v0.3.9
Downloading language-tags v0.2.2
Downloading base64 v0.6.0
Downloading unicase v1.4.2
Downloading url v1.7.0
Downloading traitobject v0.1.0
Downloading num_cpus v1.8.0
Downloading typeable v0.1.2
Downloading httparse v1.3.2
Downloading cfg-if v0.1.4
Downloading safemem v0.2.0
Downloading byteorder v1.2.3
Downloading version_check v0.1.3
Downloading idna v0.1.4
Downloading matches v0.1.6
Downloading percent-encoding v1.0.1
Downloading unicode-bidi v0.3.4
Downloading unicode-normalization v0.1.7
Downloading unicode-bidi v0.2.6
Downloading uuid v0.2.3
Downloading rustc-serialize v0.3.24
Downloading rand v0.3.22
Downloading rustls v0.9.0
Downloading itertools v0.4.19
Downloading base64 v0.5.2
Downloading chrono v0.2.25
Downloading ring v0.11.0
Downloading untrusted v0.5.1
Downloading webpki v0.14.0
Downloading rayon v0.7.1
Downloading gcc v0.3.54
Downloading rayon-core v1.4.0
Downloading crossbeam-deque v0.2.0
Downloading crossbeam-utils v0.2.2
Downloading crossbeam-epoch v0.3.1
Downloading scopeguard v0.3.3
Downloading nodrop v0.1.12
Downloading memoffset v0.2.1
Downloading arrayvec v0.4.7
Downloading webpki-roots v0.11.0
Downloading num v0.1.42
Downloading num-integer v0.1.39
Downloading num-traits v0.2.5
Downloading num-iter v0.1.37
Downloading mime v0.3.8
Downloading unicase v2.1.0
Downloading either v1.5.0
Downloading backtrace v0.3.9
Downloading failure_derive v0.1.1
Downloading rustc-demangle v0.1.8
Downloading synstructure v0.6.1
Downloading quote v0.3.15
Downloading syn v0.11.11
Downloading synom v0.11.3
Downloading unicode-xid v0.0.4
Downloading thread-scoped v1.0.2
Downloading pkg-config v0.3.11
Downloading env_logger v0.5.10
Downloading ansi_term v0.11.0
Downloading termcolor v0.3.6
Downloading humantime v1.1.1
Downloading atty v0.2.10
Downloading regex v1.0.1
Downloading quick-error v1.2.2
Downloading memchr v2.0.1
Downloading aho-corasick v0.6.5
Downloading utf8-ranges v1.0.0
Downloading regex-syntax v0.6.1
Downloading thread_local v0.3.5
Downloading ucd-util v0.1.1
Downloading unreachable v1.0.0
Downloading void v1.0.2
Downloading toml v0.4.6
Downloading serde-hjson v0.8.1
Downloading nom v3.2.1
Downloading yaml-rust v0.4.0
Downloading num-traits v0.1.43
Downloading linked-hash-map v0.3.0
Downloading regex v0.1.80
Downloading serde v0.8.23
Downloading lazy_static v0.2.11
Downloading serde_test v0.8.23
Downloading thread_local v0.2.7
Downloading regex-syntax v0.3.9
Downloading aho-corasick v0.5.3
Downloading utf8-ranges v0.1.3
Downloading memchr v0.1.11
Downloading thread-id v2.0.0
Downloading kernel32-sys v0.2.2
Downloading winapi v0.2.8
Downloading winapi-build v0.1.1
Downloading memchr v1.0.2
Downloading linked-hash-map v0.5.1
Downloading unicode-width v0.1.5
Downloading bitflags v1.0.3
Downloading yaml-rust v0.3.5
Downloading vec_map v0.8.1
Downloading strsim v0.7.0
Downloading textwrap v0.10.0
Downloading nix v0.11.0
Downloading backtrace-sys v0.1.23
Downloading cc v1.0.17
Compiling num-integer v0.1.39
Compiling utf8-ranges v0.1.3
Compiling untrusted v0.5.1
Compiling quick-error v1.2.2
Compiling lru_time_cache v0.8.0
Compiling regex-syntax v0.3.9
Compiling byteorder v1.2.3
Compiling matches v0.1.6
Compiling quote v0.3.15
Compiling cc v1.0.17
Compiling nodrop v0.1.12
Compiling unicode-xid v0.1.0
Compiling serde v0.8.23
Compiling memoffset v0.2.1
Compiling unicode-xid v0.0.4
Compiling vec_map v0.8.1
Compiling itoa v0.4.1
Compiling cfg-if v0.1.4
Compiling rustc-serialize v0.3.24
Compiling winapi v0.2.8
Compiling safemem v0.2.0
Compiling strsim v0.7.0
Compiling rayon-core v1.4.0
Compiling either v1.5.0
Compiling itertools v0.4.19
Compiling regex v1.0.1
Compiling thread-scoped v1.0.2
Compiling unicode-normalization v0.1.7
Compiling winapi-build v0.1.1
Compiling libc v0.2.42
Compiling scopeguard v0.3.3
Compiling xdg v2.1.0
Compiling maplit v1.0.1
Compiling lazy_static v0.2.11
Compiling version_check v0.1.3
Compiling void v1.0.2
Compiling gcc v0.3.54
Compiling typeable v0.1.2
Compiling unicode-width v0.1.5
Compiling bitflags v1.0.3
Compiling yaml-rust v0.3.5
Compiling linked-hash-map v0.5.1
Compiling nix v0.11.0
Compiling num-traits v0.2.5
Compiling pkg-config v0.3.11
Compiling dtoa v0.4.2
Compiling utf8-ranges v1.0.0
Compiling num-iter v0.1.37
Compiling ansi_term v0.11.0
Compiling language-tags v0.2.2
Compiling snowflake v1.3.0
Compiling rustc-demangle v0.1.8
Compiling lazy_static v1.0.1
Compiling serde v1.0.69
Compiling percent-encoding v1.0.1
Compiling httparse v1.3.2
Compiling ucd-util v0.1.1
Compiling traitobject v0.1.0
Compiling termcolor v0.3.6
Compiling humantime v1.1.1
Compiling unicode-bidi v0.2.6
Compiling unicode-bidi v0.3.4
Compiling base64 v0.5.2
Compiling arrayvec v0.4.7
Compiling proc-macro2 v0.4.6
Compiling serde_test v0.8.23
Compiling synom v0.11.3
Compiling backtrace-sys v0.1.23
Compiling log v0.4.3
Compiling crossbeam-utils v0.2.2
Compiling base64 v0.6.0
Compiling itertools v0.7.8
Compiling kernel32-sys v0.2.2
Compiling memchr v2.0.1
Compiling rand v0.4.2
Compiling memchr v0.1.11
Compiling time v0.1.40
Compiling atty v0.2.10
Compiling num_cpus v1.8.0
Compiling memchr v1.0.2
Compiling unreachable v1.0.0
Compiling unicase v2.1.0
Compiling unicase v1.4.2
Compiling textwrap v0.10.0
Compiling yaml-rust v0.4.0
Compiling fuse v0.3.1
Compiling id_tree v1.3.0
Compiling regex-syntax v0.6.1
Compiling linked-hash-map v0.3.0
Compiling idna v0.1.4
Compiling syn v0.11.11
Compiling log v0.3.9
Compiling quote v0.6.3
Compiling crossbeam-epoch v0.3.1
Compiling aho-corasick v0.5.3
Compiling aho-corasick v0.6.5
Compiling nom v3.2.1
Compiling rand v0.3.22
Compiling thread_local v0.3.5
Compiling clap v2.32.0
Compiling mime v0.2.6
Compiling syn v0.14.4
Compiling crossbeam-deque v0.2.0
Compiling synstructure v0.6.1
Compiling uuid v0.2.3
Compiling num-traits v0.1.43
Compiling ctrlc v3.1.1
Compiling serde_json v1.0.22
Compiling toml v0.4.6
Compiling url v1.7.0
Compiling backtrace v0.3.9
Compiling thread-id v2.0.0
Compiling url v0.5.10
Compiling mime v0.3.8
Compiling failure_derive v0.1.1
Compiling serde_derive v1.0.69
Compiling chrono v0.4.4
Compiling env_logger v0.5.10
Compiling thread_local v0.2.7
Compiling rayon v0.7.1
Compiling hyper v0.10.13
Compiling mime-sniffer v0.1.2
Compiling failure v0.1.1
Compiling num v0.1.42
Compiling regex v0.1.80
Compiling ring v0.11.0
Compiling pretty_env_logger v0.2.3
Compiling chrono v0.2.25
Compiling serde-hjson v0.8.1
Compiling config v0.8.0
Compiling webpki v0.14.0
Compiling webpki-roots v0.11.0
Compiling rustls v0.9.0
Compiling hyper-rustls v0.6.1
Compiling yup-oauth2 v1.0.7
Compiling google-drive3-fork v1.0.10
Compiling gcsf v0.1.7
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:275:13
|
275 | FileId::Inode(inode) => self.node_ids.contains_key(&inode),
| ^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::Inode(inode)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:276:13
|
276 | FileId::DriveId(drive_id) => self.drive_ids.contains_key(drive_id),
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::DriveId(drive_id)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:277:13
|
277 | FileId::NodeId(node_id) => self.tree.get(&node_id).is_ok(),
| ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::NodeId(node_id)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:278:18
|
278 | pn @ FileId::ParentAndName { .. } => self.get_file(&pn).is_some(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::ParentAndName { .. }
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:284:13
|
284 | FileId::Inode(inode) => self.node_ids.get(&inode).cloned(),
| ^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::Inode(inode)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:285:13
|
285 | FileId::DriveId(drive_id) => self.get_node_id(&FileId::Inode(self.get_inode(
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::DriveId(drive_id)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:288:13
|
288 | FileId::NodeId(node_id) => Some(node_id.clone()),
| ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::NodeId(node_id)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:289:22
|
289 | ref pn @ FileId::ParentAndName { .. } => {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::ParentAndName { .. }
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:302:13
|
302 | FileId::Inode(inode) => Some(*inode),
| ^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::Inode(inode)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:303:13
|
303 | FileId::DriveId(drive_id) => self.drive_ids.get(drive_id).cloned(),
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::DriveId(drive_id)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:304:13
|
304 | FileId::NodeId(node_id) => self.tree
| ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a reference: &FileId::NodeId(node_id)
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
error[E0658]: non-reference pattern used to match a reference (see issue #42640)
--> src/gcsf/file_manager.rs:309:13
|
309 | / FileId::ParentAndName {
310 | | ref parent,
311 | | ref name,
312 | | } => self.get_children(&FileId::Inode(*parent))?
| |_____________^
|
= help: add #![feature(match_default_bindings)] to the crate attributes to enable
help: consider using a reference
|
309 | &FileId::ParentAndName {
310 | ref parent,
311 | ref name,
312 | } => self.get_children(&FileId::Inode(*parent))?
|
error: aborting due to 12 previous errors
error: failed to compile gcsf v0.1.7
, intermediate artifacts can be found at /tmp/cargo-install.KtxsptlZHLVq
Caused by:
Could not compile gcsf
.
To learn more, run the command again with --verbose.
What logs/information could I provide to sort this out...really want to get this working. Thanks.
What permissions are required that necessitate adding this option to /etc/fuse.conf?
Is this because allow_root is a default mount option?
Hi,
Can there be a dynamic proxy support for GCSF? I'm roaming between proxy limited and open networks (ie work & office). When in office, use of proxy is mandatory, no direct access to Google Drive.
But if GCSF supports proxy, could it be intelligent enough to try to direct as well when it can't reach the proxy, and vice versa.
If proxy is set, try proxy, if can't connect, try direct. After given period ie 1 minute, if direct connection times out and is not possible (ie I went to work), then try to connect through proxy. If connected, use it until it times out again (ie I went home), then try direct.
On a mounted gcsf du
shows wrong datasizes, this is due to the filesystem reporting 512 Bytes disc usages for every file (compare ls -ls
).
For du
this can be passed by with --apparent-size
, but other programs rely on this information.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.