| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Bash find/cp script Fra : Carsten | 
  Dato :  27-09-02 09:59 |  
  |   
            
 Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
 at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
    cp -R dirA/* dirB/
 
 Men jeg vil gerne begrænse dette, så kun de filer der
 er nyere end en bestemt dato kopieres. Man kan lave
 noget med find:
    find dirA -newer /tmp/timestampfile -exec cp {} dirB \;
 
 Men den udelader directories, således disse ikke oprettes.
 Jeg har overvejet at pipe resultatet af find ind i cpio,
 og så pakke filen ud, eller måske skrive et perl script.
 Men de to metoder er ikke så tiltalende. Er der en smartere
 måde?
 
 Takker
 
 Carsten.
 
  
            
             |   |   
            
        
 
            
         
           Lars Kongshøj (27-09-2002) 
         
	
            | Kommentar Fra : Lars Kongshøj | 
  Dato :  27-09-02 11:55 |  
  |  
 
            Carsten wrote:
 > Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
 > at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
 >    cp -R dirA/* dirB/
 > Men jeg vil gerne begrænse dette, så kun de filer der
 > er nyere end en bestemt dato kopieres. Man kan lave
 > noget med find:
 >    find dirA -newer /tmp/timestampfile -exec cp {} dirB \;
 > Men den udelader directories, således disse ikke oprettes.
 Den udelader da kun directories, hvis du ikke giver cp de rigtige
 options, fx -r.
 -- 
 Lars Kongshøj
 Registrer dig som linux-bruger:
 http://counter.li.org/enter-person.php
            
             |   |   
            
        
 
            
         
           Kim Hansen (27-09-2002) 
         
	
            | Kommentar Fra : Kim Hansen | 
  Dato :  27-09-02 12:59 |  
  |   
            Carsten <carsten@spam.me.senseless> writes:
 
 > Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
 > at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
 >    cp -R dirA/* dirB/
 > 
 > Men jeg vil gerne begrænse dette, så kun de filer der
 > er nyere end en bestemt dato kopieres. Man kan lave
 > noget med find:
 >    find dirA -newer /tmp/timestampfile -exec cp {} dirB \;
 > 
 > Men den udelader directories, således disse ikke oprettes.
 > Jeg har overvejet at pipe resultatet af find ind i cpio,
 > og så pakke filen ud, eller måske skrive et perl script.
 > Men de to metoder er ikke så tiltalende. Er der en smartere
 > måde?
 
 rsync
 
 -- 
   Kim Hansen             |    |\     _,,,---,,_       |  Det er ikke
   Dalslandsgade 8, A708  |    /,`.-'`'    -.  ;-;;,_  |  Jeopardy.
   2300 København S       |   |,4-  ) )-,_. ,\ ( `'-'  |  Svar _efter_
   Phone: 32 88 60 86     |  '---''(_/--'  `-'\_)      |  spørgsmålet.
  
            
             |   |   
            
        
 
            
         
           Byrial Jensen (28-09-2002) 
         
	
            | Kommentar Fra : Byrial Jensen | 
  Dato :  28-09-02 04:59 |  
  |   
            Carsten <carsten@spam.me.senseless> skrev:
 > 
 > Jeg har 2 directories, dirA og dirB. Jeg vil gerne have,
 > at dirB er en tro kopi af dirA. Det kan man normalt gøre med:
 >    cp -R dirA/* dirB/
 > 
 > Men jeg vil gerne begrænse dette, så kun de filer der
 > er nyere end en bestemt dato kopieres. Man kan lave
 > noget med find:
 >    find dirA -newer /tmp/timestampfile -exec cp {} dirB \;
 > 
 > Men den udelader directories, således disse ikke oprettes.
 > Jeg har overvejet at pipe resultatet af find ind i cpio,
 > og så pakke filen ud, eller måske skrive et perl script.
 > Men de to metoder er ikke så tiltalende. Er der en smartere
 > måde?
 
 Man kan f.eks. bruge GNU tar:
 
 $ # NB. Utestet kode.
 $ rm -rf dirB
 $ mkdir dirB
 $ (cd dirA; tar --newer=/tmp/timestampfile -cf - .) | (cd dirB ; tar
   --preserve-permissions -xf -)
 
 Kan nemt pakkes ind i et shell script efter behag.
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |