如何获得新产生的文件,然后自动拷贝到别的目录?
jieyancai
如何获得新产生的文件,然后自动拷贝到别的目录?
比如:目录/d1会不定时产生1个文件,如何通过shell脚本+crontab任务,
将新产生的文件自动拷贝到目录/d2中,这个shell脚本能写出来吗?
多谢!
xinyv
find //your/dir -mtime xxx -exec cp {} /new/dir /;
jieyancai
[quote]原帖由 [i]xinyv[/i] 于 2008-6-18 09:25 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8609270&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
find //your/dir -mtime xxx -exec cp {} /new/dir /; [/quote]
这个方法只能拷1天为单位的新文件
我希望的是只要一产生新文件,就拷贝。
ruifox
[quote]原帖由 [i]jieyancai[/i] 于 2008-6-18 09:37 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8609376&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
这个方法只能拷1天为单位的新文件
我希望的是只要一产生新文件,就拷贝。 [/quote]
find //your/dir -mtime -1 -exec cp {} /new/dir /;
不过,怎么保证cp时,文件已经生成完毕!
jieyancai
[quote]原帖由 [i]waker[/i] 于 2008-6-18 09:53 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8609549&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
cp -ur /d1 /d2 [/quote]
我的是solaris,没有-u的参数
jieyancai
[quote]原帖由 [i]ruifox[/i] 于 2008-6-18 09:52 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8609539&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
find //your/dir -mtime -1 -exec cp {} /new/dir /;
不过,怎么保证cp时,文件已经生成完毕! [/quote]
-1和0的效果都是一样的,24小时内的文件,并不符合要求。另外,这样的话,也会重复拷贝很多文件。
希望的是只拷贝新产生的文件。
比如脚本可以查找1分钟内产生的文件,然后只将这1分钟内产生的文件拷走。
err7dd
find /d1 -type f -amin 1 ...
jinl
如果dir2完全是dir1的备份,那可以循环比对
[code]
for file in `ls /dir1`
do
[ -e "/dir2/$file" ] || cp /dir1/$file /dir2
done
[/code]
[[i] 本帖最后由 jinl 于 2008-6-18 13:28 编辑 [/i]]
jieyancai
[quote]原帖由 [i]jinl[/i] 于 2008-6-18 13:21 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8613007&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
如果dir2完全是dir1的备份,那可以循环比对
for file in `ls /dir1`
do
[ -e "/dir2/$file" ] || cp /dir1/$file /dir2
done
[/quote]
vc1# for file in `ls /oracle/jyc/dir1`
[ -e "/oracle/jyc/dir2/$file" ] || cp /oracle/jyc/dir1/$file /oracle/jyc/dir2
for: Command not found
vc1# file: doneUndefined variable
vc1#
done: Command not found
vc1#
vc1#
没法用哦
cscscheng
ln -s d1 ../d2
建个目录链接不OK了..这样就不需要拷贝了啊..
jinl
[quote]原帖由 [i]jieyancai[/i] 于 2008-6-18 13:35 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8613110&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
vc1# for file in `ls /oracle/jyc/dir1`
[ -e "/oracle/jyc/dir2/$file" ] || cp /oracle/jyc/dir1/$file /oracle/jyc/dir2
for: Command not found
vc1# file: doneUndefined variable
vc1#
done: Co ... [/quote]
写到文件里去,执行脚本
jieyancai
[quote]原帖由 [i]cscscheng[/i] 于 2008-6-18 13:40 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8613134&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
ln -s d1 ../d2
建个目录链接不OK了..这样就不需要拷贝了啊.. [/quote]
拷贝的是两台不同机器之间的目录,防止主机器崩溃,备机能有备份。
jieyancai
[quote]原帖由 [i]jinl[/i] 于 2008-6-18 20:29 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8616135&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
写到文件里去,执行脚本 [/quote]
脚本里也不行
vc1# ls -l
total 14
drwxr-xr-x 2 root other 512 Jun 18 13:30 dir1
drwxr-xr-x 2 root other 512 Jun 18 13:30 dir2
-rw-r--r-- 1 root other 0 Jun 4 15:28 f1
-rw-r--r-- 1 root other 0 Jun 4 15:28 f2
drwxr-xr-x 2 oracle dba 512 Jun 16 15:30 j1
drwxr-xr-x 3 root other 512 Jun 16 10:27 j2
drwxr-xr-x 2 root other 512 Jun 4 15:28 j3
drwxr-xr-x 2 root other 512 Jun 16 15:30 j4
-rwxr-xr-x 1 root other 127 Jun 19 08:39 t.sh
vc1# more t.sh
#!/bin/sh
for file in `ls /oracle/jyc/dir1`
[ -e "/oracle/jyc/dir2/$file" ] || cp /oracle/jyc/dir1/$file /oracle/jyc/dir2
done
vc1# ./t.sh
./t.sh: syntax error at line 3: `[' unexpected
vc1#
ruifox
#!/bin/sh
for file in `ls /oracle/jyc/dir1`
do
[ -e "/oracle/jyc/dir2/$file" ] || cp /oracle/jyc/dir1/$file /oracle/jyc/dir2
done
jinl
[quote]原帖由 [i]ruifox[/i] 于 2008-6-19 09:14 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8617699&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
#!/bin/sh
for file in `ls /oracle/jyc/dir1`
do
[ -e "/oracle/jyc/dir2/$file" ] || cp /oracle/jyc/dir1/$file /oracle/jyc/dir2
done [/quote]
还是狐狸看得仔细,我都没发现他的输入里面少了个do
jieyancai
vc1# more t.sh
for file in `ls /oracle/jyc/dir1`
do
[ -e "/oracle/jyc/dir2/$file" ] || cp /oracle/jyc/dir1/$file /oracle/jyc/dir2
done
vc1# ./t.sh
./t.sh: test: argument expected
不行阿!我的是solaris9系统
jieyancai
[quote]原帖由 [i]walkerxk[/i] 于 2008-6-18 15:13 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8613917&ptid=1162250][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
增量备份的话用rsync吧。 [/quote]
这个怎么用阿?