@@ -116,11 +116,12 @@ class CopyQueue:
116
116
""""""
117
117
HalfMegaByte = 512 * 1024
118
118
119
- def __init__ (self , logger ): #initialization
119
+ def __init__ (self , logger , sort_files = False ): #initialization
120
120
self .direct = deque ([])
121
121
self .tape_dict = {}
122
122
self .items = 0
123
123
self .logger = logger
124
+ self .sort_files = sort_files
124
125
125
126
def add_copy_item (self , c ):
126
127
(u , p , s ) = c .eval ()
@@ -171,9 +172,9 @@ class CopyQueue:
171
172
dst = dest + "/" + t
172
173
dst = os .path .normpath (dst )
173
174
174
- for d in dirs :
175
+ for d in sorted ( dirs ) if self . sort_files else dirs :
175
176
walk_dirs .append (os .path .join (dst , d ))
176
- for f in files :
177
+ for f in sorted ( files ) if self . sort_files else files :
177
178
self .logger .log (NOTSET + 1 , 'Creating a copy item for file {}' .format (f ))
178
179
c = CopyItem (os .path .join (root , f ), os .path .join (dst , f ), VEA_PREFIX ,
179
180
cp_attr , cp_xattr , logger )
@@ -284,6 +285,7 @@ parser.add_argument('-a','--all', help='achieve files recursively and preserve a
284
285
parser .add_argument ('-v' , help = 'Verbose output. Set VERBOSE level 5' , action = 'store_true' )
285
286
parser .add_argument ('--verbose' , help = 'Configure verbosity of logger. VERBOSE shall be 0-6. default is 4' , default = str (logger_info ))
286
287
parser .add_argument ('-q' ,'--quiet' , help = 'No message output' , action = 'store_true' )
288
+ parser .add_argument ('--sort-files' , help = 'Sort the file list before copying' , action = 'store_true' )
287
289
288
290
args = parser .parse_args ()
289
291
@@ -395,7 +397,7 @@ if len(args.SOURCE) == 0:
395
397
logger .log (NOTSET + 1 , 'Source: {}' .format (args .SOURCE ))
396
398
397
399
# Create the list of copy item
398
- copyq = CopyQueue (logger )
400
+ copyq = CopyQueue (logger , args . sort_files )
399
401
for s in args .SOURCE :
400
402
dst = args .DEST
401
403
if os .path .isfile (s ):
0 commit comments