diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-03-12 09:50:39 +0200 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-03-12 09:55:50 +0200 |
commit | 176442eb1554a674dfa291585abd5eb54aa213d8 (patch) | |
tree | 6d455346ef8be4e3af6678775273847e6d98128a | |
parent | d848a9587748308421b54ad2e3126f8afc7a3b38 (diff) | |
download | obnam2-176442eb1554a674dfa291585abd5eb54aa213d8.tar.gz |
fix: backup and restore of symlink
-rw-r--r-- | src/cmd/restore.rs | 6 | ||||
-rw-r--r-- | src/fsiter.rs | 2 |
2 files changed, 3 insertions, 5 deletions
diff --git a/src/cmd/restore.rs b/src/cmd/restore.rs index cb42114..147c422 100644 --- a/src/cmd/restore.rs +++ b/src/cmd/restore.rs @@ -168,11 +168,9 @@ fn restore_symlink(path: &Path, entry: &FilesystemEntry) -> RestoreResult<()> { debug!(" mkdir {}", parent.display()); if !parent.exists() { std::fs::create_dir_all(parent)?; - { - symlink(path, entry.symlink_target().unwrap())?; - } } - debug!("restored regular {}", path.display()); + symlink(entry.symlink_target().unwrap(), path)?; + debug!("restored symlink {}", path.display()); Ok(()) } diff --git a/src/fsiter.rs b/src/fsiter.rs index f59fb64..57b6fd5 100644 --- a/src/fsiter.rs +++ b/src/fsiter.rs @@ -45,7 +45,7 @@ impl Iterator for FsIterator { fn new_entry(e: &DirEntry) -> FsIterResult<FilesystemEntry> { let path = e.path(); - let meta = std::fs::metadata(path); + let meta = std::fs::symlink_metadata(path); debug!("metadata for {:?}: {:?}", path, meta); let meta = match meta { Ok(meta) => meta, |