Kökün erişemediği bir dizini yalnızca kökün erişebileceği bir dizine nasıl kopyalayabilirim?


11

Sunucuda olan bir nfs mount, bir dizin var /home/myname/.rubies

Kök bu dizine erişemiyor:

[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
  File: `/home/mitchell.usher/.rubies'
  Size: 4096            Blocks: 8          IO Block: 32768  directory
Device: 15h/21d Inode: 245910      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (  970/mitchell.usher)   Gid: (  100/   users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000

[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied

/optSadece kök erişimi olan bu dizinden bir şey kopyalamaya çalışıyorum :

[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied

[mitchell.usher@server ~]$ sudo !!
sudo cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot stat `.rubies/ruby-2.1.3/': Permission denied

Açıkçası aşağıdakileri yapabilirim (ve şu an için yaptığım şey):

[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/

Bunu bir ara adım olarak kopyalamayı veya izinleri değiştirmeyi içermeyen herhangi bir yol var mı?


cp -Rp /home/mitchell.usher/.rubies /tmp/templocation; sudo mv /tmp/templocation/ruby-2.1.3 /optBu işe yaramayacak mı? Hayır ise neden?
— MelBurslan

@MelBurslan, soruda belirtildiği gibi yaptım. Ama diyelim ki dosya sisteminde başka hiçbir yere sığmayacak 50 GB bir dosya, o zaman yapamamcp <file> /tmp/tmpfile
— Mitch

Yanıtlar:


29

tarArabellek işlemi olarak kullanabilirsiniz

cd .rubies
tar cf - ruby-2.1.3 | ( cd /opt && sudo tar xvfp - )

İlk tarsizin gibi çalışır ve böylece ana dizininizi okuyabilirsiniz; ikincisi taraltında çalışır sudove böylece yazabilirsiniz /opt.


1
Bu nasıl bellekte? 10 GB'lık bir dosyam varsa, bu, boruları ve katranları kaldırmadan önce 10 GB belleği dolduracak mı, yoksa katran olarak katran çıkarır mı?
— Mitch

5
Paralel koşuyorlar; tipik bir borunun 64Kbayt tamponu vardır. Boru boyutu detayları için :-) unix.stackexchange.com/questions/11946/… hakkında endişelenecek bir şey yok .
— Stephen Harris


cpioaynı şekilde kullanılabilir.
— Toby Speight

GNU katranınız varsa, -Cdizini değiştirmek için argümanını kullanarak alt kabuğu kaydedebilirsiniz (örn. tar cf - ruby-2.1.3 | sudo tar -C /opt xpf -). sudoParolanızı sormamasını sağlamak istediğinizden bahsetmeye değer olabilir (örneğin, bir sudoersgiriş veya önbelleğe alınmış kimlik bilgileri aracılığıyla ).
— Toby Speight

6

Yerel dizine kopyalamak için rsyncveya scpdüğmesini kullanabilirsiniz user@localhost.

Örnek rsync:

# rsync "$real_user@localhost:$PWD/.rubies/ruby-2.1.3" /opt

Alternatif olarak

$ rsync .rubies/ruby-2.1.3 "root@localhost:/opt"

localhost'a doğrudan root erişimine izin verirseniz (önerilmez; normalde root erişiminin yoluyla olmasını tercih ederiz sudo).


-4

FAT'a (ya da her neyse) ikinci bir giriş yapabilirsiniz.
Bunu dosyam için yapıyorum HOSTS. Dosyaya başvuran yazılabilir bir dizinde bir bağlantı var ve farklı izinlere sahip, bu yüzden /Hosts/HOSTSkolayca değiştirebilir ve değişiklikleri her ikisi de (yani "bir") dosya (lar) koyulur. 1 dosya için 2 giriş. Komutu hatırlamıyorum, üzgünüm.

Sizin için, içindeki /opttüm dosyalar için bir bağlantı oluşturursunuz .rubiesve içindeki herhangi bir şeyi değiştirdiğinizde /opt, dosya ile aynı dosyadır .rubies.


4
Bu soruya cevap vermemenin yanı sıra yanlış ve yanıltıcıdır.
— Wildcard

Bu sadece yanlış çünkü farklı bir dosya sistemi ile uğraşıyoruz. Cevaplayıcı açık bir şekilde, bu soru için geçerli olmasa da, belirtildiği gibi çalışan sabit bağlantılardan bahsediyordu.
— Julie Pelletier

Teşekkürler Wildcard, cevabımda bir sürü flack alma konusunda bir satırım vardı, ancak Michael bunu geliştirdiğinde düzenlendi. : p
— Mühendis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.