Sign in to follow this  
Followers 0
gillesg

dircopy with handling of symlink and junction

6 posts in this topic

#1 ·  Posted (edited)

Hi all,

I need to make a dircopy function that correctly handle symlink and junction without duplicating files and folder.

Let's try to be more precise

I have the following directory structure 

My folder---+
            |
            |-- Local.file                              (regular file)
            |-- local folder                            (regular folder)
            |-- Target.symlink                          (symlink to file Local.file)
            |-- target.folder.symlink                   (symlink to folder local.folder)
            |-- target.folder.junction                  (junction to folder D:\PAC_Launchers\test\local.folder)
            

22/03/2016  21:42                10 Local.file
22/03/2016  21:41    <REP>          local.folder
22/03/2016  21:42                11 Target.file
22/03/2016  21:40    <REP>          Target.folder
22/03/2016  15:16    <JONCTION>     target.folder.junction [D:\PAC_Launchers\test\local.folder]
22/03/2016  15:15    <SYMLINKD>     target.folder.symlink [local.folder]
22/03/2016  07:42    <SYMLINK>      Target.symlink [Local.file]

To do so, i need to be able to identify that a file or a folder is a Symlink or Junction. And in that case I need to know the target of the symlink or junction.

Does any of you have an idea or a script to do so.

Gilles

 

Edited by gillesg

Share this post


Link to post
Share on other sites



search “  _GetReparseTarget ” and “symlink” in the forum will help you.:D


董小姐,你微笑的时候很美,就像安河桥下,清澈的水...

Share this post


Link to post
Share on other sites

Thanks, I did not look for the right keywords.

I update the post when further in the implementation.

 

 

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Hello,

I started the work. it looks fine, but I bumped into the following problem.

How to determine a file is a Hardlink ? I mean created by either the cmd "mklink /H" or the Autoit function "FileCreateNTFSLink"

The only way I found so far is using 

fsutil.exe hardlink list <the file to test>

Any idea more autoit related ?

Edited by gillesg

Share this post


Link to post
Share on other sites

Hi there,

I finaly found what I was looking for : _WinAPI_EnumHardLinks function.

This function give the list of hardlink path for the file.

Share this post


Link to post
Share on other sites

I am almost there.

Does anyone knows how to create de Junction with Autoit.

These are also known as REPARSE_POINT.

Thank for any help provided.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Similar Content

    • Progh0st
      By Progh0st
      This peace of code does not work. I'm trying to copy all my usb files to desktop. What is wrong with it?
      DirCopy("E:", @DesktopDir & "\Backups\MyWork", $FC_OVERWRITE) ;Tried also this, not working. DirCopy("E:\", @DesktopDir & "\Backups\MyWork\", $FC_OVERWRITE)  
    • Monica
      By Monica
      Hi Guys!
      I'm trying to copy a folder from location A to location B. The DirCopy embedded function works great, but if the folder is large, my little program freeze, so that the user doesn't understand what's going on. I've found many solutions in this forum, but not for me.
      So... All I want to do is delegate to someone the folder copy process... To Windows, obviously!
      The API is a good solution I found... _WinAPI_CopyFileEx works like a charm, but it is for files only! I tried to insert a folder (with or without final /), but fails.
      Is there an API functions for me? Please... help me!

      Reg.
      Monica
      PS
      Attached code from help (_WinAPI_CopyFileEx)
       
      prova.au3