我有一个位于通过调用创建的子目录中的文件列表find
:
for f in $(find . -name "myFile.txt"); do
echo "$f" >> filelist.txt;
done
的内容filelist.txt
如下所示:
./First/Path/To/File/myFile.txt
./Second/Path/To/File/myFile.txt
./Third/Path/To/File/myFile.txt
...
现在我想将所有这些文件复制到远程计算机,以便将它们放置在相应的文件夹中:
remoteComputerName:/some/root/directory/First/Path/To/File/myFile.txt
remoteComputerName:/some/root/directory/Second/Path/To/File/myFile.txt
remoteComputerName:/some/root/directory/Third/Path/To/File/myFile.txt
但是在远程计算机上,文件夹结构First/Path/To/File/
等还不存在,而且我不想复制整个目录,而只想复制其中的文件myFile.txt
。
我知道在本地计算机上可以使用命令
while read p; do cp --parents $p /some/root/directory ; done < filelist.txt
但是,对于使用scp
此选项的远程计算机--parents
不再起作用。如果它丢失,也rsync
不会创建父目录。有人知道解决方案吗?
使用
rsync
:从您运行的目录(当前
find
所在的目录的根目录)运行filelist.txt
它。--files-from
读取要从文件中复制的文件(换行符分隔)filelist.txt
。--files-from
应始终使用相对路径(与直接提及不同),尽管您可以明确说明: