精华内容
下载资源
问答
  • MessageBox(_T("文件目录为空"), _T("提示")); return; } GetAllFileName(m_openPathStr, m_fileList); //将获取的文件复制到制定目录下 if(m_savePathStr.IsEmpty()) { MessageBox(_T("保存...


    BOOL CPigeonholeFileDlg::OnInitDialog()
    {
    CDialogEx::OnInitDialog();


    // 将“关于...”菜单项添加到系统菜单中。


    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);


    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    BOOL bNameValid;
    CString strAboutMenu;
    bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
    ASSERT(bNameValid);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    }


    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE); // 设置大图标
    SetIcon(m_hIcon, FALSE); // 设置小图标


    // TODO: 在此添加额外的初始化代码


    m_progressCtrl.SetRange(0,100);
    m_progressCtrl.SetBarColor(RGB(255,0,0));
    m_progressCtrl.SetBkColor(RGB(0,255,0));
    m_image.Load(_T("D:\\Test\\3.jpg"));


    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
    }


    void CPigeonholeFileDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
    }
    else
    {
    CDialogEx::OnSysCommand(nID, lParam);
    }
    }


    // 如果向对话框添加最小化按钮,则需要下面的代码
    //  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
    //  这将由框架自动完成。


    void CPigeonholeFileDlg::OnPaint()
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // 用于绘制的设备上下文


    SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);


    // 使图标在工作区矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;


    // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialogEx::OnPaint();
    HDC destHdc = GetDC()->GetSafeHdc();
    HDC srcHdc = m_image.GetDC();
    RECT rt;
    GetWindowRect(&rt);
    // BitBlt(destHdc, 0,0, rt.right - rt.left, rt.bottom - rt.top, srcHdc, 0, 0, SRCCOPY);
    DeleteDC(destHdc);
    DeleteDC(srcHdc);
    }
    }


    //当用户拖动最小化窗口时系统调用此函数取得光标
    //显示。
    HCURSOR CPigeonholeFileDlg::OnQueryDragIcon()
    {
    return static_cast<HCURSOR>(m_hIcon);
    }






    void CPigeonholeFileDlg::OnBnClickedOpenpathButtton()
    {
    BROWSEINFO  bi;
    bi.hwndOwner=NULL;
    bi.pidlRoot=NULL;
    bi.pszDisplayName=NULL;
    bi.lpszTitle=NULL;
    bi.ulFlags=0;
    bi.lpfn =NULL;
    bi.iImage =0;
    LPCITEMIDLIST pidl=SHBrowseForFolder(&bi);
    if(!pidl)
    return;
    TCHAR  szDisplayName[255];
    SHGetPathFromIDList(pidl,szDisplayName);
    CString str(szDisplayName);
    m_openPath.SetWindowTextA(str);
    m_openPathStr = str;
    }




    void CPigeonholeFileDlg::OnBnClickedSavepathButton()
    {
    // TODO: 在此添加控件通知处理程序代码
    BROWSEINFO  bi;
    bi.hwndOwner = NULL;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = NULL;
    bi.lpszTitle = NULL;
    bi.ulFlags = 0;
    bi.lpfn = NULL;
    bi.iImage = 0;
    LPCITEMIDLIST pidl = SHBrowseForFolder(&bi);
    if(!pidl)
    return;
    TCHAR  szDisplayName[255];
    SHGetPathFromIDList(pidl, szDisplayName);
    CString str(szDisplayName);
    m_savePath.SetWindowTextA(str);
    m_savePathStr = str;
    }


    void CPigeonholeFileDlg::GetAllFileName(CString path, CArray<CString> &fileArray)
    {
    CString fileName, fdPath, strTmp;
    path += _T("\\*.*");
    CFileFind find;
    BOOL bf = find.FindFile(path);
    while(bf)
    {
    bf = find.FindNextFile();
    if(!find.IsDots())
    {      
    fdPath=find.GetFilePath();
    if (find.IsDirectory())
    {                //如果是文件夹,递归,继续往下找
    GetAllFileName(fdPath, fileArray);
    }
    else
    {                //如果是文件,判断是否是*.txt
    strTmp=fdPath.Right(4);
    strTmp.MakeLower();
    fileArray.Add(fdPath);
    }
    }
    }
    find.Close();
    }


    BOOL CPigeonholeFileDlg::GetFileName(CString path, CString &fileName)
    {
    int pos = path.ReverseFind(_T('\\'));
    if(pos > 0)
    {
    fileName = path.Right(path.GetLength() - pos - 1);
    return TRUE;
    }
    return FALSE;
    }


    void CPigeonholeFileDlg::CopyToFolder(CString savePath)
    {
    CString folder;
    CString path;
    CString fileName;
    float scale = 100 / (m_fileList.GetCount() + 1);
    for(int i = 0; i < m_fileList.GetCount(); i++)
    {
    GetFileName(m_fileList.GetAt(i), fileName);
    for(int j = 0; j < m_folderList.GetCount(); j++)
    {
    if(fileName.Find(m_folderList.GetAt(j)) != -1)
    {
    //创建文件夹
    folder = savePath + _T("\\") + m_folderList.GetAt(j);
    mkdir(folder.GetBuffer());
    //复制到制定目录
    path = folder +  _T("\\") + fileName;
    CopyFile( m_fileList.GetAt(i), path, TRUE);
    m_nFileCount++;
    }
    }
    m_progressCtrl.SetPos(int(scale * (i + 1)));
    }
    m_progressCtrl.SetPos(100);
    }




    void CPigeonholeFileDlg::GetDate(Date &date, CString str)
    {
    int pos = str.Find('/');
    date.Year = atoi(str.Left(pos).GetBuffer());
    str = str.Right(str.GetLength() - pos - 1);
    pos = str.Find('/');
    date.Month = atoi(str.Left(pos).GetBuffer());
    str = str.Right(str.GetLength() - pos - 1);
    date.Day = atoi(str.GetBuffer());
    }


    void CPigeonholeFileDlg::NextDay(Date &date)
    {
    if(date.Month == 1 || date.Month == 3 || date.Month == 5 || date.Month == 7 || date.Month == 8 || date.Month == 10 || date.Month == 12)
    {
    if(date.Day == 31)
    {
    date.Day = 1;
    ++date.Month;
    }
    else
    ++date.Day;
    }
    else if(date.Month == 2)
    {
    if(date.Day == 28)
    {
    if((date.Year % 4 == 0 && date.Year % 100 != 0)||(date.Year % 400 == 0))
    ++date.Day;
    else
    {
    date.Day = 1;
    date.Month = 3;
    }
    }
    else if(date.Day == 29)
    {
    date.Day = 1;
    date.Month = 3;
    }
    else
    ++date.Day;
    }
    else
    {
    if(date.Day == 30)
    {
    date.Day = 1;
    ++date.Month;
    }
    else
    ++date.Day;
    }
    if(date.Month > 12)
    {
    date.Month = 1;
    ++date.Year;
    }
    }


    void CPigeonholeFileDlg::GetFolderList(Date startDate, Date endDate)
    {
    CString str;
    while(!(startDate.Year == endDate.Year && startDate.Month == endDate.Month && startDate.Day == endDate.Day))
    {
    str.Format(_T("%04d%02d%02d"), startDate.Year, startDate.Month, startDate.Day);
    m_folderList.Add(str);
    NextDay(startDate);
    }
    str.Format(_T("%04d%02d%02d"), startDate.Year, startDate.Month, startDate.Day);
    m_folderList.Add(str);
    }


    void CPigeonholeFileDlg::OnBnClickedStartButton()
    {
    // TODO: 在此添加控件通知处理程序代码
    m_nFileCount = 0;
    Date startDate;
    Date endDate;
    CString startDatestr, endDateStr;
    m_startDateCtrl.GetWindowText(startDatestr);
    m_endDateCtrl.GetWindowText(endDateStr);
    GetDate(startDate, startDatestr);
    GetDate(endDate, endDateStr);
    GetFolderList(startDate, endDate);
    //获取指定目录下的所有文件
    if(m_openPathStr.IsEmpty())
    {
    MessageBox(_T("文件目录为空"), _T("提示"));
    return;
    }
    GetAllFileName(m_openPathStr, m_fileList);
    //将获取的文件复制到制定目录下
    if(m_savePathStr.IsEmpty())
    {
    MessageBox(_T("保存目录为空"), _T("提示"));
    return;
    }
    CopyToFolder(m_savePathStr);
    CString str;
    str.Format(_T("完成%d个文件的整理"),m_nFileCount);
    MessageBox(str, _T("提示"));
    m_folderList.RemoveAll();
    m_fileList.RemoveAll();
    }
    展开全文
  • 上面的代码可以将目录中的文件,按照创建日期复制到YYYY-MM-DD形式的子目录中,只需要执行一步,目录下所有的文件就可以自动地按照日期归档喽! 感谢原创博主! http://blog.csdn.net/powershell/artic


    收藏好的网页一直都没好好整理一下,今天正好有时间就来整理到我的博客里,以便后期学习使用!




    解读:

    上面的代码可以将目录中的文件,按照创建日期复制到YYYY-MM-DD形式的子目录中,只需要执行一步,目录下所有的文件就可以自动地按照日期被归档喽!





    感谢原创博主!

    http://blog.csdn.net/powershell/article/details/3153456

    展开全文
  • 归档 tar是一个归档命令,只有归档功能,默认没有压缩功能 ...-t list 查看归档文件的内容 -f file 归档的文件名 -v verbose 显示归档的过程 -p preseve 保留原来的权限 -A 追加一个文件到归档文件中 -

    归档

    tar是一个归档命令,只有归档功能,默认没有压缩功能

    tar [选项] [文件或目录]

    -c  create 创建一个归档

    -C directory 解压到某个目录

    -x extract 解压

    -t  list 查看归档文件的内容

    -f file 归档的文件名

    -v verbose 显示归档的过程

    -p preseve 保留原来的权限

    -A 追加一个文件到归档文件中

    --exclude 排除指定的文件不添加到归档或压缩

    --delete 从归档文件中删除某个文件

    tar cf ps.tar passwd shadow 将passwd和shadow两个文件或目录归档为ps.tar

    tar tf ps.tar 查看归档后的文档

    压缩

    压缩格式一般有gzip压缩,压缩为tar.gz,bzip2压缩,压缩格式为tar.bz2,bzip2压缩率更好一点

    tar czvf ps.tar.gz passwd shadow  将passwd和shadow两个文件或目录归档并压缩为ps.tar.gz

    tar cjvf ps.tar.bz2 passwd shadow  将passwd和shadow两个文件或目录归档并压缩为ps.tar.bz2

    tar tvzf ps.tar.gz 查看 ps.tar.gz 文件

    tar tvjf ps.tar.bz2 查看ps.tar.bz2文件

    tar xvzf ps.tar.gz passwd 只解压ps.tar.gz中的passwd

    tar xvzpf  ps.tar.gz 解压ps.tar.gz文件,并且解压出来的文件和打包之前的文件的权限一致

    tar -N '2015/07/28' -cvzf home.tar.gz /home/      归档并压缩home下日期大于等于7月28日的文件

    tar --exclude /etc/passwd -czvf etc.tar.gz /etc/    归档并压缩/etc/目录,但是/etc下的passwd除外

    tar xzvf ps.tar.gz -C /tmp/ 解压到tmp下

    tar --delete passwd -vf ps.tar 从归档文件中删除passwd


    拷贝(底层使用的都是ssh传输协议)

    scp home.tar.gz server0:/tmp  将home.tar.gz拷贝到server0主机的tmp下

    scp -r /etc server0:/tmp 将etc下的所有拷贝到server0下的tmp,-r表示递归

    rsync增量拷贝

    rsync -av:常用组合,表示将权限保留,如果是目录递归拷贝

    展开全文
  • 该工具可以把文件按日期归类,并把文件归档到相应的日期目录,同样可以处理子目录。其特点: 1、支持递归子目录 2、支持移动、复制两种操作方式 3、支持重名文件,重命名。 4、支持归类目录的日期名称自定义。 解压...
  • Postgresql wal 归档文件处理

    千次阅读 2019-12-27 11:33:42
    数据库采用主从备份方式进行搭建,未及时清理归档归档文件夹目录不断增大,撑爆整个磁盘。 所谓WAL日志归档,其实就是把在线的WAL日志备份出来。 wal_level='replica' # - Archiving - archive_mode = on # ...

    数据库采用主从备份方式进行搭建,未及时清理归档,归档文件夹目录不断增大,撑爆整个磁盘。

    所谓WAL日志归档,其实就是把在线的WAL日志备份出来。
    
    wal_level='replica'
    
    # - Archiving -
    
    archive_mode = on               # enables archiving; off, on, or always
                                    # (change requires restart)
    archive_command = 'test ! -f /mnt/backup/%f && cp %p /mnt/backup/%f'
                                    # command to use to archive a logfile segment
                                    # placeholders: %p = path of file to archive
                                    #               %f = file name only
                                    # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
    #archive_timeout = 0            # force a logfile segment switch after this
                                    # number of seconds; 0 disables
                                    
    #wal_level archive 或更高级别
    #archive_mode on 开启归档模式,always 主从模式时,从库也开启归档模式。需要重启数据库
    #archive_command 归档时触发的命令或脚本, 不需要重新启动数据库。 systemctl reload postgresql-10 即可。
    #archive_timeout 可以理解为超过指定时间强制执行 select pg_switch_wal(); 场景, 数据库不是很活跃,数据库wal日志产生的过慢时。
    

    归档触发条件说明:

    1. 手动执行 select pg_switch_wal();
    2. WAL 日志写满后触发归档 WAL 日志文件默认为 16MB,这个值可以在编译 PostgreSQL 时通过参数 “–with-wal-segsize” 更改,编译后不能修改。
    3. 如果设置 archive_timeout, 超时触发。

    实际应用

    目标:按日期存放wal日志到/mnt/archdir/

    编写归档脚本 archive.sh ,设置权限 chmod 700 archive.sh

    #!/bin/bash    
        
    export LANG=en_US.utf8    
    export DATE=`date +"%Y%m%d"`    
        
    BASEDIR="/mnt/archdir"    
        
    if [ ! -d $BASEDIR/$DATE ]; then    
      mkdir -p $BASEDIR/$DATE    
      if [ ! -d $BASEDIR/$DATE ]; then    
        echo "error mkdir -p $BASEDIR/$DATE"    
        exit 1    
      fi    
    fi    
        
    cp $1 $BASEDIR/$DATE/$2    
    if [ $? -eq 0 ]; then    
      exit 0    
    else    
      echo -e "cp $1 $BASEDIR/$DATE/$2 error"    
      exit 1    
    fi
    echo -e "backup failed"    
    exit 1    
    

    配置postgres.conf 中的archive_command命令:

    archive_command = 'archive.sh %p %f' 
    

    重新加载生效

    
    systemctl reload postgresql-10
    
    

    定时清空归档文件

    可以查看到归档目录下的wal 文件。

    清空脚本

    编辑脚本pg_wal_clean.sh,使用pg_controldata 查看最后归档点,配合pg_archivecleanup命令清除最新归档点之前的wal。

    
    #!/bin/bash
    LASTWAL=`sudo /usr/lib/postgresql/9.5/bin/pg_controldata  -D /home/user3/pg/data |grep "Latest checkpoint's REDO WAL file" |awk '{print $6}'`
    echo $LASTWAL 
    sudo /usr/lib/postgresql/9.5/bin/pg_archivecleanup -d /home/user3/pg/pg_archive $LASTWAL
    
    sudo /usr/lib/postgresql/9.5/bin/pg_archivecleanup -d /home/user3/pg/pg_archive $LASTWAL
    

    定时任务启动清空wal脚本

    crontab -e这样可以已编辑模式打开个人的crontab配置文件,然后加入一下这行:

    0 0 * * * /home/user3/pg_wal_clean.sh
    

    这将会在每天凌晨运行指定的.sh文件

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G2NCH6dJ-1577417590274)

    注意:
    执行脚本要拥有可进入目录,和执行pg_controldata等命令的权限。

    引用:
    Archive wal 归档

    展开全文
  • 2. 当前所有的日志文件归档到以今天日期目录的文件夹中 那么在logback.xml中该如何配置呢? 在这个https://www.cnblogs.com/wgslucky/p/10026322.html日志中,已经实现了每隔10分钟生成一个文件的配置,现在...
  • oracle 11g开启归档模式及修改归档目录
  • 实用shell脚本 遍历文件夹 日期比较
  • -- 归档每天的文件 --> <!-- 限制单个文件大小 --> <!-- 限制每天文件个数 --> ${log_path}/warn.log" filePattern="${log_path}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> ...
  • 文件为什么需要归档

    2012-06-07 15:23:08
    许多企业对文件的管理几乎没有任何措施,少数公司有文件服务器进行统一的文件管理,在这种情况下,文件归档的发展尚需时日。...权限设置上,共享方式只能通过系统目录权限进行设置,归档则可以按权限控制归档文...
  • Oracle 简单清理归档日志文件

    万次阅读 2016-07-19 16:32:30
    查看归档 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 2536 下一个存档日志序列 2538 当前日志序列 2538 先查看一下存储的位置 SQL> ...
  • 在本教程中,我们将学习如何在类 Unix 系统中查看一个归档或者压缩文件的内容而无需实际解压它。...归档文件不是一个压缩文件,但压缩文件可以是一个归档文件,清楚了吗?好,那就让我们进入今天的...
  • Python:实现文件归档

    千次阅读 2012-01-04 23:34:13
    初学python,整理了下书上的...#功能说明:备份文件,以当前日期为子目录存放备份后的文件 import os import time #要备份的目录,可在此列表中增加 source = [r'E:\360Downloads'] #备份文件存放的目录 targ
  • 查看归档日志及rman备份文件

    千次阅读 2019-02-16 18:15:12
    [root@his1 /]# ls ----查看**/**根目录下的文件 archive boot dev home lib64 media mnt opt rman sbin srv tmp usr bin cgroup etc lib lost+found misc net proc root s...
  • Windows下如何删除N天前的归档文件

    千次阅读 2012-02-12 18:43:56
    归档日志放到远程主机上,在远程主机要进行定期清理,每天清理半个月前的日志,linux实现很简单,dos命令怎么搞啊? 方法一: conn sys/ oracle as sysdba set feedback off set pagesize 0 set heading ...
  • 随着回调的事件与越来越多,如果每个事件都写一个方法,这就显得代码的冗余,所以,今天将日志都归档,分类 事件日志,看情况,我们一般保留10天,至于错误日志,一般不会报错,所以我们按文件的大小进行分类 # ...
  • 网络管理 网络的必须要素:1、ip/netmask(子网掩码) , 2、gateway...网卡目录:/etc/sysconfig/network-scripts/ 该目录存放了所有网卡信息 更改网卡名称操作,以上述网卡为例:1、先执行nmcli connection , 2、...
  • 文件进行归档的命令为

    千次阅读 2020-03-13 21:11:47
    [root@linux ~]# tar [-cxtzjvfpPN] 文件目录 … 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/...
  • 我的《电子文件归档与管理规范》

    千次阅读 2015-04-13 14:52:41
    我的文件归档与管理规范,主要是命名准则。
  • 1 得到${log_source_directory} 目录中所有这样的文件,其文件名中含有${today} 的文件。其中errorlog 表示每一个这样的文件。 3 判断条件是否满足,第一个条件${errorlog}不为空, 第二个条件 ${log_source_...
  • 曾经看过其他软件可以提供用户历史数据查询生成后直接输出成PDF文件保存在上位机硬盘里,这样数据是不容易在常规条件下修改。但是WinCC在变量归档查询的时候,只能通过打印机和脚本实现。 对于计算机语言比较弱的...
  • 无纸化报表和手动扫描纸质文档是归档账单、发票和财务报表的比较好的方式。然而,工作人员需要花较多的时间和精力来整理这些数字文件夹。并且,随着数字文档的增多,即使整理归档的人具有很好的记忆力和习惯,也容易...
  • 我需要一个 winston 传输,它通过写入一个常量文件名来旋转日志文件,并且只在日期翻转时添加日期。 例如 myLog.log <= 当前日志文件被写入 myLog.2015-03-30.log <= 昨天的日志文件 这也是我自己的第一个 ...
  • 测试
  • 归档日志(让日志以日期结尾)

    千次阅读 2011-07-13 11:04:30
    今天突然看到jetty日志里面的日志好多是以日期结尾的,但是记得以前...eg:你可以在你的目录中创建一个日志文件:touch zy.log  此时你可以将你的日志文件改成带日期的格式: mv zy.log zy.log.`date +"%Y-%m-%d-%H
  • 关于清理linux大量历史文件的shell脚本,清理历史文件脚本,对于有日期格式的文件,如"log20170425123300.txt",可以通过改脚本进行清理。 其实如果文件格式不是这类情况的,也可以通过find命令,查找指定范围内的...
  • JDK目录文件说明

    千次阅读 2015-10-21 20:24:42
    JDK:开发环境,搞技术的人或者应用服务器使用。 JRE:运行环境,如浏览器插件或者...JDK目录文件如下: bin: 存放java启动命令以及其他开发工具命令(如javac),该目录应保存到PATH变量中  JDK/bin下工具列表说明
  • 指定文件路径设置为不同路径,从而将当前日志文件归档日志文件置不同的目录。 而 2013-12-21 的日志文件在由 fileNamePattern 指定。 %d{yyyy-MM-dd} 指定日期格式, %i 指定索引 --> ${LOG_PATH}/${APPDIR...
  • 恢复归档日志(会恢复到归档日志所在目录,有初始化参数log_archive_dest_1决定。) RMAN> list backup of archivelog all; 备份集列表 =================== BS 关键字 大小 设

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,383
精华内容 10,953
关键字:

归档文件目录日期