我正在编写一个shell脚本,将所有文件放在hadoop目录中。我用了命令:
hadoop dfs -put /opt/nikoo28/resources/conf ./
现在它复制hadoop主目录中的conf文件夹,覆盖所有内容。但是,有一个文件“donotcopy.txt”,我不想复制它。有什么方法可以跳过一个特定的文件吗?
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。
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
wwwo4jvm3#
我在apache hadoop文档中看到:用法:hadoop fs-put。。。将单个src或多个src从本地文件系统复制到目标文件系统。还从stdin读取输入并写入目标文件系统。然后是一个有用的例子hadoop fs-输入-hdfs://nn.example.com/hadoop/hadoopfile 从标准输入读取输入。所以也许你可以用 find 表达式将此文件灰显出来,然后通过管道传输到 hadoop :
find
hadoop
find /opt/nikoo28/resources/conf ! -name "doNotCopy.txt" | hadoop dfs -put - ./
3条答案
按热度按时间kninwzqo1#
在shell脚本中添加以下行:
只需将不想复制的文件移到其他文件夹。执行hadoop fs-put命令。现在,将文件移回其原始位置。
如果要保留文件权限,请执行以下操作:
注意:如果在创建目录、移动文件或复制文件时出现权限错误,请添加sudo。
zzoitvuj2#
这有点奇怪,但应该有用:
wwwo4jvm3#
我在apache hadoop文档中看到:
用法:hadoop fs-put。。。
将单个src或多个src从本地文件系统复制到目标文件系统。还从stdin读取输入并写入目标文件系统。
然后是一个有用的例子
hadoop fs-输入-hdfs://nn.example.com/hadoop/hadoopfile 从标准输入读取输入。
所以也许你可以用
find
表达式将此文件灰显出来,然后通过管道传输到hadoop
: