开发者

Copy specific file types from one host to another

I'm creating a bash script that automatically copies C source and header files 开发者_高级运维from a particular directory in another host to the directory I'm in on the current host.

It currently generates this command: ssh host2 "cd dir1/dir2 && find . -maxdepth 1 -regextype posix-extended -regex '.*.(c|h)' | tar -T - -c -f -" | tar xf -

The problem is I get this error: "tar: This does not look like a tar archive"

This error is output by the final tar (tar xf -) because for some reason the tar file that gets piped is corrupt.

If I do it instead using a combination of ssh, tar and scp it works fine, but that requires me to enter my password (for host2) twice (once for the ssh and once for the scp). I could enter the password as an argument to the script, but I don't want it to appear in my bash history.

Any ideas?


Have you considered using rsync with appropriate --include and --exclude flags? rsync can copy over ssh, and you should be able to copy the entire tree (or an subset) with a single command.

Also, if your only concern is having to type in your password you could also just try using authorized keys (and possibly ssh-agent) so you don't need to type in your password to access the other host.


Why not use rsync to do this job instead? It supports --filter which fits your needs exactly. Here's a sample:

http://ubuntuforums.org/showthread.php?t=1240150

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜