Так как мой nfs
— это win
тип сервера, он не может содержать :
. Я хочу скопировать несколько файлов с исходного сервера в nfs
каталог на другом сервере и переименовать их одновременно.
Скрипт выглядит так:
#!/bin/bash
in_files="node1:~/experiment/wrfout_d01_2012-12-01*"
###########################################################
# the files look like wrfout_d01_2012-12-01_00:00:00
# wrfout_d01_2012-12-01_06:00:00
# wrfout_d01_2012-12-01_12:00:00
# wrfout_d01_2012-12-01_18:00:00
###################################
for fn in $in_files;do
echo $fn
newfn=$(basename "$fn")
echo 'apply basename :'
echo $newfn
scp -r "$fn" "./${newfn//:/_}"
echo 'next:'
done
После запуска этого скрипта он сообщает
node1:~/experiment/wrfout_d01_2012-12-01*
apply basename :
wrfout_d01_2012-12-01_12_00_00
./wrfout_d01_2012-12-01*: File name too long
./wrfout_d01_2012-12-01*: File name too long
./wrfout_d01_2012-12-01*: File name too long
./wrfout_d01_2012-12-01*: File name too long
next:
Но, кажется, если я применяю скрипт только к одному файлу, то все в порядке (т.е. изменяю его in_files
на определенный файл), например:
node1:~/experiment/wrfout_d01_2012-12-01_00:00:00
apply basename :
wrfout_d01_2012-12-01_00:00:00
wrfout_d01_2012-12-01_00:00:00 100% 71MB 70.5MB/s 00:00
next:
1. Так как же мне сделать, чтобы это работало для нескольких файлов?
2. Кстати, кажется, rsync
можно также сделать эту часть, какой из них быстрее или предпочтительнее.