EVL – ETL Tool

Products, services and company names referenced in this document may be either trademarks or registered trademarks of their respective owners.

Copyright © 2017–2023 EVL Tool, s.r.o.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.

Table of Contents


(since EVL 1.3)

Copy <source> to <dest>, or multiple <source>(s) to <dest> directory. <source> and <dest> might be one of:


On local files it calls standard ‘cp’ command to copy files, but when <source> and/or <dest> contain URI ‘hdfs://’ (i.e. Hadoop FS), then it calls appropriate commands to copy from/to such source/destination.

For example when argument starts with ‘s3://’, then it is supposed to be on S3 file system and calls the function ‘evl_s3_cp’, which is by default ‘aws s3 cp’.

So far it can copy to/from local path from/to some specific one or within one URI type. So not yet possible to copy dirrectly for example from S3 to G-Drive.

When more than one <source> is specified, then URI prefix must be the same for all of them.


is to be used in EVS job structure definition file or in EWS workflow structure definition.

evl cp

is intended for standalone usage, i.e. to be invoked from command line.

Using this command might keep your code clean, but for more complex copying better use appropriate commands directly, as it gives you all the available options for particular storage or protocol type.


  [-f|--force] [-p] <source>... <dest>

evl cp
  [-f|--force] [-p] <source>... <dest>

evl cp
  ( --help | --usage | --version )


-f, --force

destination will be overwritten if exists


preserve mode (i.e. permission), timestamps and ownership

Standard options:


print this help and exit


print short usage information and exit

-v, --verbose

print to stderr info/debug messages of the component


print version and exit


These lines in EVL job (an ‘evs’ file):

Cp hdfs:///some/path/to/file /some/local/path/
Cp /some/local/path/file hdfs:///some/path/
Cp hdfs:///some/path/file hdfs:///other/path/
Cp /some/local/path/file /other/local/path/

will call (with handling fails in proper EVL way):

evl_hdfs_get hdfs:///some/path/file /some/local/path/
evl_hdfs_put /some/local/path/file hdfs:///some/path/
evl_hdfs_cp hdfs:///some/path/file hdfs:///other/path/
cp /some/local/path/file /other/local/path/

where defaults for ‘evl_hdfs_*’ variables are:

function evl_hdfs_get { hdfs dfs -get ; }
function evl_hdfs_cp  { hdfs dfs -cp  ; }
function evl_hdfs_put { hdfs dfs -put ; }