| 
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| realman Участник
 
 
 Вступление в Клуб: 15.03.2018
 
 | 
			
				|  Ср Май 23, 2018 15:41   Как заархивировать папку |   |  
				| Полезность: Нет оценки 
 |  
				| Есть файлы в папке в FTP директории, нужно проверить по условию если дата изменения файла больше 3-х дней то брать эти файлы и переместить их на новую папку и затем новую папку  заархивировать. Как можно сделать? Буду благодарен
 
 Пытаюсь так(архив создается но кривой, не открывается):
 
  	  | Код: |  	  | vc_FtpDir        varchar2;            -- папка выгрузки отчета ablob             Blob;
 a_compressed_blob Blob;
 vc_CurDir        varchar2;
 vn_DirId         binary_integer;
 vn_ExResult         binary_integer;
 vc_FName         varchar2(512);
 vc_FAttrs         varchar2(512);
 vc_FUowner         varchar2(512);
 vc_FGowner         varchar2(512);
 vc_FMdate         varchar2(512);
 vn_Fsize         binary_integer;
 lid      integer;
 new_file integer;
 begin
 vc_FtpDir      := '[/home/pc/test/import/archive]';
 for i_path in 1 .. Indx(vc_FtpDir)
 loop
 -- получим путь к каталогу для очистки
 vc_CurDir := ::[RUNTIME].[REC].GETPAR(vc_FtpDir, i_path);
 -- получим дескриптор каталога
 vn_DirId    := stdio.opendir(vc_CurDir);
 -- сбрасываем указатель чтения на начало
 vn_ExResult := stdio.resetdir(vn_DirId);
 loop
 vn_ExResult := stdio.readdir(
 dir   == vn_DirId,
 name   == vc_FName,
 attrs   == vc_FAttrs,
 uowner   == vc_FUowner,
 gowner   == vc_FGOwner,
 mdate   == vc_FMDate,
 fsize   == vn_FSize
 );
 -- выберем файлы, давностью 3 дня
 if sysdate - to_date(vc_FMdate, 'yyyy-mm-dd hh24:mi:ss') < 3 then
 -- begin pl/sql
 LID := Z$LOG_CORE.OPEN('import/archive');
 new_file := STDIO.MKDIR('import/archive/Аrchive_'||to_char(sysdate, 'yyyymmdd_hh24:mi'), 0);
 Z$LOG_CORE.CLOSE(LID);
 -- end pl/sql
 stdio.MOVE_FILE( vc_CurDir || '/' || vc_FName, '/home/pc/test/import/archive/Аrchive_'||to_char(sysdate, 'yyyymmdd_hh24:mi') || '/' || vc_FName );
 ablob := ::[RUNTIME].[DT].FILE2BLOB(vc_CurDir, 'Аrchive_'||to_char(sysdate, 'yyyymmdd_hh24:mi'));
 -- begin pl/sql
 a_compressed_blob := utl_compress.lz_compress(ablob, 9);
 -- end pl/sql
 ::[RUNTIME].[DT].BLOB2FILE(a_compressed_blob,vc_CurDir, 'Аrchive_'||to_char(sysdate, 'yyyymmdd_hh24:mi')||'.zip');
 end if;
 exit when vn_ExResult <= 0;
 end loop;
 end loop;
 end;
 
 | 
 
 Последний раз редактировалось: realman (Чт Май 24, 2018 10:43), всего редактировалось 3 раз(а)
 |  |  
		|  |  
		| Эмиралька Эксперт
 
 
 Вступление в Клуб: 09.11.2015
 
 | 
			
				|  Чт Май 24, 2018 06:32   Re: Как заархивировать папку в FTP |   |  
				| Полезность: Нет оценки 
 |  
				|  	  | realman пишет: |  	  | Есть файлы в папке в FTP директории...заархивировать. Как можно сделать? Буду благодарен 
 Пытаюсь так:
 
 | 
 
 А при чём тут File Transport Protocol ?!
 И в чём вопрос, собственно?
 |  |  
		|  |  
		| realman Участник
 
 
 Вступление в Клуб: 15.03.2018
 
 | 
			
				|  Чт Май 24, 2018 09:45    |   |  
				| Полезность: Нет оценки 
 |  
				| Вопрос в том как заархивировать папку , не обязательно в ftp
 |  |  
		|  |  
		| Ezhik Участник со стажем
 
 
 Вступление в Клуб: 17.04.2009
 
 | 
			
				|  Чт Май 24, 2018 10:34    |   |  
				| Полезность: 1 
 |  
				| Посмотрите в сторону пакета [ZIP] Можно попытаться собрать все в блоб, а потом заархивировать этим пакетом (получить на выходе блоб архива, который и записывать в файл).
 |  |  
		|  |  
		| realman Участник
 
 
 Вступление в Клуб: 15.03.2018
 
 | 
			
				|  Чт Май 24, 2018 10:44    |   |  
				| Полезность: Нет оценки 
 |  
				|  	  | Ezhik пишет: |  	  | Посмотрите в сторону пакета [ZIP] Можно попытаться собрать все в блоб, а потом заархивировать этим пакетом (получить на выходе блоб архива, который и записывать в файл).
 | 
 
 Обновил вопрос, приведите плиз пример
 |  |  
		|  |  
		| Ezhik Участник со стажем
 
 
 Вступление в Клуб: 17.04.2009
 
 | 
			
				|  Чт Май 24, 2018 10:59    |   |  
				| Полезность: 2 
 |  
				| ::[ASV_REESTR_FILES].[EXPORT] 
 
  	  | Код: |  	  | --создадим архив begin
 ::[RUNTIME].[ZIP].add_file(v_blob_zip,rFile_name,v_blob);
 exception
 when others then log_err('Ошибка при добавлении файла в архив:'||rFile_name,false);
 end;
 ::[RUNTIME].[ZIP].finish_zip(v_blob_zip);
 --сохраним архив
 blob2file(v_blob_zip,vPath,rFile_name_ar);
 | 
 |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |