"Phantom" overwrite with dd on sda*?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users "Phantom" overwrite with dd on sda*?
# 1  
Old 10-17-2014
"Phantom" overwrite with dd on sda*?

Greetings.

Just wondering about a little "quirk" which I seem to have found when using dd Smilie (FWIW on that note, I'm using a flash install of Parted Magic to run dd in these tests...)

Thinking about it, there should be some measurable excitement associated with
Code:
dd if=/dev/zero of=/dev/sda* obs=10M

as the wildcard should take out each sda partition in turn.

Indeed, if one has multiple partitions to be wiped (while possibly keeping the boundaries for each), this might appear to be one way of getting the job done without much fuss.

However, using the above commandline, I've seen this output repeated on several different systems instead:
Code:
dd: writing to ‘/dev/sda*': No space left on device
2007040+0 records in
97+1 records out
1027362816 bytes (1.0 GB) copied, 1.25925 s, 816 MB/s

...with what seems to be no overwrite activity whatsoever.

So, the central question is: Why do I always see the same exact records in/out @ 1.0 GB output here, regardless of the target machine/drive? Moreover, what does dd think it's writing to in this case?


Thanks!
# 2  
Old 10-17-2014
It is doing exactly what you told it to do: create a regular file with the literal name /dev/sda* and write zero bytes to that file until the fiesystem containing the /dev directory is out of space.

Shell pathname pattern matching doesn't apply here unless you have a directory in the directory where you run this command with the name of= that contains a directory named dev that contains one or more files that match the pattern sda*. And, if there was more than one file matching that pattern, you would be giving dd two or more of=pathname operands, and that would produce unspecified behavior.

The dd utility can only process one output file per invocation.
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 10-17-2014
Thanks again, Don.

So, let me get this straight.

We essentially created a file called sda* in a /dev/ folder on the flash drive, and filled it with zeros until there was no more space at the inn (per usual dd practice).

If so, that could explain the constant 1GB output.

However, I saw this over on stackexchange regarding an (unfortunate) use of /dev/sda*
Quote:
I was trying to write an iso to a flash drive. I mistakenly thought that all /dev/sda* are flash drives attached to the system. I wasn't sure how to figure out which was which, so I just unplugged my flash drives and overwrote them all. In retrospect.... this was unbelievably dumb.
( partition - Ignorantly dd'd /dev/sda* - Unix & Linux Stack Exchange )

Realizing the limitation which dd has with respect to output per invocation, how could this have happened?

Thanks again --
# 4  
Old 10-17-2014
Quote:
Originally Posted by LinQ
Thanks again, Don.

So, let me get this straight.

We essentially created a file called sda* in a /dev/ folder on the flash drive, and filled it with zeros until there was no more space at the inn (per usual dd practice).

If so, that could explain the constant 1GB output.

However, I saw this over on stackexchange regarding an (unfortunate) use of /dev/sda*( partition - Ignorantly dd'd /dev/sda* - Unix & Linux Stack Exchange )

Realizing the limitation which dd has with respect to output per invocation, how could this have happened?

Thanks again --
Not essentially; exactly. Use the command:
Code:
ls -l /dev/sda*

and you'll see the device files that already existed and the regular file named /dev/sda* that you just created with dd with size 1027362816.

Let me see if I understand this correctly. You looked at a website that never showed what dd command was used, but had a description that started with the paragraph:
Quote:
I was trying to write an iso to a flash drive. I mistakenly thought that all /dev/sda* are flash drives attached to the system. I wasn't sure how to figure out which was which, so I just unplugged my flash drives and overwrote them all. In retrospect.... this was unbelievably dumb.
and went on to ask if it was possible to recover his system since it would no longer boot. And you decided to try to duplicate what the person who asked that question described as unbelievably dumb behavior.

Instead of us telling you how you can wipe out all of the data on all of your disk drives by copying /dev/zero to them, why don't you tell us what you're really trying to do?
# 5  
Old 10-18-2014
Yeowtch! Feels like I drew back a stump on that one! I wasn't looking for a dd commandline to clear an HD. I'm simply trying to learn something here --

Peace, friend...

From the OP:
Quote:
So, the central question is: Why do I always see the same exact records in/out @ 1.0 GB output here, regardless of the target machine/drive? Moreover, what does dd think it's writing to in this case?
As background, I discovered this behavior quite some time ago while looking for a way to clear the data content from multiple partitions in turn using dd. I found the effects to be quite uniform and harmless in this distro context; which I just reported here.

Then, recently, having seen the post on Stack Exchange which pointed at some formulation of a dd commandline that was reported to have successfully wiped at least one drive using /dev/sda*, I decided to formulate my question for the unix.com communities.

In any event, it seems as though we're just writing to a space in RAM (in this particular context); as calling ls -l on a test case before and after a reboot shows no lasting presence of the created sda* entity. Indeed, a call to top confirms that we're simply draining memory away (used, free, buff, cached):

Before 722040 1349280 88880 500312 (approximate)
>After 1731636 345722 88880 1503648 (approximate)

So, if I might, this begs the next question: What is the significance of the uniform 1.0 GB limit on this action? There's certainly more RAM on-hand in any case.

Still just trying to learn something new here Smilie


Thanks again; and have a great day --
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

8. UNIX for Advanced & Expert Users

"Phantom character" in Socket (RESOLVED)

Hi everyone: I have built a tcl script, this script communicate with an ADA program trough a socket, sending binary data, the sender proc is this one: The code where im sending info is here: proc p_send_data { DATA } { global connection puts "Sending trough $connection..." #... (2 Replies)
Discussion started by: trutoman
2 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question