How to automate file transfer from one directory to another directory server based on File name.?

Discussion in 'Command Line' started by Anil Maharjan, Aug 27, 2014.

  1. Anil Maharjan

    Anil Maharjan New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    1
    Hello all,
    I want to transfer a file from one server directory location to another server into multiple directory location based on file name?
    Lets say I have a list of file in with multiple file name having same ext.
    \home\server1\File\20140827\
    File1_A_20140827_01.unl
    File1_A_20140827_02.unl
    ...
    File2_B_20140827.unl
    File2_C_20140827.unl
    ans so on.

    Now I need to transfer these files into another ftp location into multiple directory
    \home\server2\File\
    for files related to A
    into \home\server2\File\A\20140827
    mput *A*
    for files related to B into
    \home\server2\File\B\20140827
    mput *B*

    and so on for following days
    into \home\server2\File\A\20140828
    ...
    I can do this by manually but it's taking time to do this for day by day basis.
    so, can anyone help me one this to write the shell script or some automation script to overcome with this .
    Your help is much appreciated.


    Thanks
    Anil Maharjan
  2. unixfish

    unixfish Member

    Messages:
    42
    Likes Received:
    23
    Trophy Points:
    8
    I would write a Perl script using the FTP interface. The script could break down the names into elements, make decisions based on that, then put the files into the proper directory on the remote.

    Actually, you shouldn't use FTP - it's a security risk. SFTP or SSH are better, but I won't belabor that point.

    The code is not complex - it's just a bit of manipulating.
  3. Anil Maharjan

    Anil Maharjan New Member

    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    1
    Thanks for your response and suggestion , well actually speaking I have no idea regarding perl script but I can learn if i need.
    Yes , FTP is risky but I am using internal network only so I think there won't be much issue on this.
    Also, it would be great if you can share some links or post or some helpful code then it would be helpful.
    Thanks again.
    Anil
  4. unixfish

    unixfish Member

    Messages:
    42
    Likes Received:
    23
    Trophy Points:
    8
    ...or any language would work...

    You are taking a file name, and splitting the name into an array by the underscore.

    In Perl, if $filename = "File1_A_20140827_01.unl", you would

    @filenamepieces = split "_", $filename;

    Then,
    $filenamepieces[0] = "File1"
    $filenamepieces[1] = "A"
    $filenamepieces[2] = "20140827"
    $filenamepieces[3] = "01.unl"

    These array pieces can then map to the folder you need to send it to / create and send it to. At this point, you have the "info you need" to drive a script.

    You can do this an any language - or a shell script - it's just a bit easier in Perl (for me at least). Perl has a decent FTP interface, so you could use that to cd to wherever you need and feed it the files to place in the appropriate directory on the remote server.
  5. icehouse15

    icehouse15 New Member

    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    1
    Seems I can not add attachments link

    Sorry


    Search Google : website is "linuxlinks period com" page : "FileTransfer dot html"
    Last edited: Aug 29, 2014
  6. Rodrigo

    Rodrigo Member

    Messages:
    30
    Likes Received:
    11
    Trophy Points:
    8
    You should write a bash script and put it on the server you want to copy the files. It's good idea create a cron with you script to schecule the task . Another option is use public keys and use "scp" command to copy the files.

Share This Page