Как скопировать все файлы и каталоги, кроме одного, с локального диска на HDFS? - PullRequest
0 голосов
/ 21 января 2020

У меня есть каталог /home/my_directory/, который содержит следующие файлы и подкаталоги:

anotherTest.txt  doNotCopy.txt   my_subdirectory/   subdirectory2/   test.txt      

Как мне скопировать все файлы и каталоги в HDFS, кроме doNotCopy.txt file?

1 Ответ

2 голосов
/ 21 января 2020

--copyFromLocal не позволяет исключать определенные файлы. Что вы можете сделать, это следующее:

ls /home/my_directory | grep -v 'doNotCopy.txt' | while read -r fileName ; do 
    eval "hdfs dfs -copyFromLocal -f $fileName /path/to/HDFS/" 
done

Теперь, если вы ls ваш /path/to/HDFS/, вы должны получить нужные файлы там:

hdfs dfs -ls -C /path/to/HDFS/

anotherTest.txt   my_subdirectory/   subdirectory2/   test.txt 

Если вы хотите исключить несколько файлов или каталогов

ls /home/my_directory | grep -v 'doNotCopy.txt\|dirDoNotCopy\|anotherTextFile.txt' | while read -r fileName ; do 
    eval "hdfs dfs -copyFromLocal -f $fileName /path/to/HDFS/" 
done
...