复制hadoop目录中除1以外的所有文件

t30tvxxf  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(313)

我正在编写一个shell脚本,将所有文件放在hadoop目录中。
我用了命令:

hadoop dfs -put /opt/nikoo28/resources/conf ./

现在它复制hadoop主目录中的conf文件夹,覆盖所有内容。
但是,有一个文件“donotcopy.txt”,我不想复制它。有什么方法可以跳过一个特定的文件吗?

kninwzqo

kninwzqo1#

在shell脚本中添加以下行:

mkdir /opt/copy
mv /opt/nikoo28/doNotCopy.txt /opt/copy/doNotCopy.txt
hadoop dfs -put /opt/nikoo28/resources/conf ./ && mv /opt/copy/doNotCopy.txt /opt/nikoo28/doNotCopy.txt

只需将不想复制的文件移到其他文件夹。执行hadoop fs-put命令。现在,将文件移回其原始位置。
如果要保留文件权限,请执行以下操作:

mkdir /opt/copy
cp -p /opt/nikoo28/doNotCopy.txt /opt/copy/doNotCopy.txt
rm /opt/nikoo28/doNotCopy.txt
hadoop dfs -put /opt/nikoo28/resources/conf ./ && cp -p /opt/copy/doNotCopy.txt /opt/nikoo28/doNotCopy.txt

注意:如果在创建目录、移动文件或复制文件时出现权限错误,请添加sudo。

zzoitvuj

zzoitvuj2#

这有点奇怪,但应该有用:

file=./conf/doNotCopy.txt
[[ -f $file ]] && mv $file $file.old
hadoop dfs -put /opt/nikoo28/resources/conf ./
rm $file
[[ -f $file ]] && mv $file.old $file
wwwo4jvm

wwwo4jvm3#

我在apache hadoop文档中看到:
用法:hadoop fs-put。。。
将单个src或多个src从本地文件系统复制到目标文件系统。还从stdin读取输入并写入目标文件系统。
然后是一个有用的例子
hadoop fs-输入-hdfs://nn.example.com/hadoop/hadoopfile 从标准输入读取输入。
所以也许你可以用 find 表达式将此文件灰显出来,然后通过管道传输到 hadoop :

find /opt/nikoo28/resources/conf ! -name "doNotCopy.txt" | hadoop dfs -put - ./

相关问题