linux怎么写复制脚本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux怎么写复制脚本?相关的知识,希望对你有一定的参考价值。

想写个脚本,就是指定的某文件夹,如果有更新,便把更新的内容、图片复制到另一个文件夹。
请问该脚本怎么写,请给出具体操作,谢谢^_^!

参考技术A #!/bin/bash
dir_source=/path/to/your_dir
dir_save=/path/to/save
sfile=$(ls -1 $dir_source)
for files in sfile
do
    if [ ! -e $dir_save/$files ]; then #新文件在另外目录不存在
        cp dir_source=/path/to/your_dir/$files $dir_save
    elif [ $files -nt $dir_save/$files ]; then #在另外目录有同名文件存在,且有更新
        cp dir_source=/path/to/your_dir/$files $dir_save
    fi
done

参考技术B 列出文件夹下所有的文件名和更改日期,写入一个文件;写个脚本列出所有文件和更改日期,跟前面的文件比较,看多出哪些,执行复制,把新的列表写入那个文件;用cron定时执行这个脚本。追问

不会写,请给个实例,谢谢

追答

只会用python写

import os,json
dir_a='c:\\\\a\\\\'
dir_b='c:\\\\b\\\\'
a=os.listdir(dir_a)
b=map(lambda x:os.path.getmtime(dir_a+x),a)
c=[dict((a[i],b[i])) for i in range(len(a))]
if os.path.isfile('log.txt'):
    with open('log.txt','r') as f1:
        d=json.loads(f1.read())
    e=list(set(c)-set(d))
    for j in e.keys():
        os.system('cp %s%s %s'%(dir_a,j,dir_b))
with open('log.txt','w') as f0:
    f0.write(json.dumps(c))

 没考虑子目录

直接用cron定时运行

追问

热心网友给出的脚本,你能帮我解释一下吗?

哪个是源文件夹?哪个是目标文件夹?
回答的是热心网友,可能没有百度帐号,问不了。
你写的那些我不明白,没基础。

本回答被提问者和网友采纳
参考技术C 有一个现成的工具rsync可以使用,功能很强大的, 具体用法可以看 man rsync, 如果没安装的话就装一个吧 包名就叫rsync

最简单的参数就用 -a (归档模式),rsync -a fsource dest

你可以设置好你要的参数,把命令加到cronjob去以后就高枕无忧

Linux下编写一脚本,实现本目录下文件的批量复制。

老师要求bash编程编一脚本,不用这些个指令!

最简单的方式,使用 -r 选项进行递归复制。
cp -r from/ dest/

如果只需要复制某个文件夹下面的特殊文件,可以使用 find 命令先找出这些文件,然后进行复制,例如:
将 from 目录下的所有.txt文件复制到 dest目录下:
find ./from/ -name "*.txt" -exec cp ./dest/ \;
参考技术A 脚本其实就是一些命令通过一定的结构组织起来的。
比如写个copy.sh脚本,内容如下:
#!/bin/sh
cp -a $1/* $2
然后给这个脚本执行权限 chmod a+x copy.sh
使用的时候 ./copy.sh from dest
就把from目录的内容全部复制到dest目录了。本回答被提问者和网友采纳

以上是关于linux怎么写复制脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何写个脚本将Linux目录下的几个文件夹定时复制

linux 怎么样复制文件夹内所有文件到另一个文件夹

linux下用c语言写出复制黏贴文件

linux系统创建文件,创建目录,创建用户,创建组,复制文件,重命名文件的命令怎么写

在linux中复制文件夹但不复制tar文件

linux 怎么将文件拷贝到目录